oracle 多个多个实例 多个监听器时间:2022-07-14 08:34:5211月20日Oracle 单一主机多个实例多个监听器配置Case: 1. 一台服务器主机, 有多个实例, 如: TSDB/ORCL; 又需要配置多个监听器: TSDB<--->LISTENER/ORCL<--->LISTENER_ORCL 2. 需要指定不同的LISTENER端口 Cause: pmon只会动态注册port等于1521的监听器, 其它端口则pmon不能动态注册listener, 要想让pmon动态注册listener, 需要设置local_listener参数 Solution: 设置local_listener参数 1. LSNRCTL HELP信息C:/>lsnrctlLSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 20-11月-2008 22:18:25Copyright (c) 1991, 2005, Oracle. All rights reserved.欢迎来到LSNRCTL, 请键入"help"以获得信息。LSNRCTL> help以下操作可用星号 (*) 表示修改符或扩展命令:start stop statusservices version reloadsave_config trace change_passwordquit exit set*show*LSNRCTL> show current_listener目前的监听程序为 LISTENERLSNRCTL> status正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production启动日期 20-11月-2008 19:32:04正常运行时间 0 天 2 小时 51 分 20 秒跟踪级别 off安全性 ON: Local OS AuthenticationSNMP OFF监听程序参数文件 E:/oracle/product/10.2.0/db_1/network/admin/listener.ora监听程序日志文件 E:/oracle/product/10.2.0/db_1/network/log/listener.log监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.100)(PORT=1521)))服务摘要..服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "orcl" 包含 1 个例程。 例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...服务 "orclXDB" 包含 1 个例程。 例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...服务 "orcl_XPT" 包含 1 个例程。 例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...服务 "tsdb" 包含 2 个例程。 例程 "tsdb", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 例程 "tsdb", 状态 READY, 包含此服务的 1 个处理程序...服务 "tsdbXDB" 包含 1 个例程。 例程 "tsdb", 状态 READY, 包含此服务的 1 个处理程序...服务 "tsdb_XPT" 包含 1 个例程。 例程 "tsdb", 状态 READY, 包含此服务的 1 个处理程序...命令执行成功LSNRCTL> 2. listener.ora文件内容 ============================================# listener.ora Network Configuration File: E:/oracle/product/10.2.0/db_1/network/admin/listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = E:/oracle/product/10.2.0/db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = tsdb) (ORACLE_HOME = E:/oracle/product/10.2.0/db_1) (SID_NAME = tsdb) ) )LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) ) ) (DESCRIPTION = (PROTOCOL_STACK = (PRESENTATION = GIOP) (SESSION = RAW) ) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 15210)) ) )SID_LIST_LISTENER_ORCL = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = E:/oracle/product/10.2.0/db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = E:/oracle/product/10.2.0/db_1) (SID_NAME = orcl) ) )LISTENER_ORCL = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1522)) ) ) )============================================== LSNRCTL> show current_listener;NL-00853: 未定义的 show 命令 "current_listener;"。请尝试 "help show"LSNRCTL> show current_listener目前的监听程序为 LISTENERLSNRCTL> status正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521)))TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听程序 32-bit Windows Error: 61: Unknown errorLSNRCTL> start启动tnslsnr: 请稍候...TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production系统参数文件为E:/oracle/product/10.2.0/db_1/network/admin/listener.ora写入E:/oracle/product/10.2.0/db_1/network/log/listener.log的日志信息监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC0ipc)))监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.100)(PORT=1521)))监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.100)(PORT=15210))(PROTOCOL_STACK=(PRESENTATION=GIOP)(SESSION=RAW)))正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production启动日期 20-11月-2008 22:47:03正常运行时间 0 天 0 小时 0 分 1 秒跟踪级别 off安全性 ON: Local OS AuthenticationSNMP OFF监听程序参数文件 E:/oracle/product/10.2.0/db_1/network/admin/listener.ora监听程序日志文件 E:/oracle/product/10.2.0/db_1/network/log/listener.log监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC0ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.100)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.100)(PORT=15210))(PROTOCOL_STACK=(PRESENTATION=GIOP)(SESSION=RAW)))服务摘要..服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "orcl" 包含 1 个例程。 例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...服务 "orclXDB" 包含 1 个例程。 例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...服务 "orcl_XPT" 包含 1 个例程。 例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...服务 "tsdb" 包含 2 个例程。 例程 "tsdb", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 例程 "tsdb", 状态 READY, 包含此服务的 1 个处理程序...服务 "tsdbXDB" 包含 1 个例程。 例程 "tsdb", 状态 READY, 包含此服务的 1 个处理程序...服务 "tsdb_XPT" 包含 1 个例程。 例程 "tsdb", 状态 READY, 包含此服务的 1 个处理程序...命令执行成功LSNRCTL> set current_listener LISTENER_ORCL目前的监听程序为 LISTENER_ORCLLSNRCTL> status正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1520)))TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听程序 32-bit Windows Error: 61: Unknown errorLSNRCTL> start启动tnslsnr: 请稍候...TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production系统参数文件为E:/oracle/product/10.2.0/db_1/network/admin/listener.ora写入E:/oracle/product/10.2.0/db_1/network/log/listener_orcl.log的日志信息监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC1ipc)))监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.100)(PORT=1522)))正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1520)))TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听程序 32-bit Windows Error: 61: Unknown errorLSNRCTL> status正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))LISTENER 的 STATUS------------------------别名 LISTENER_ORCL版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production启动日期 20-11月-2008 22:49:08正常运行时间 0 天 0 小时 25 分 33 秒跟踪级别 off安全性 ON: Local OS AuthenticationSNMP OFF监听程序参数文件 E:/oracle/product/10.2.0/db_1/network/admin/listener.ora监听程序日志文件 E:/oracle/product/10.2.0/db_1/network/log/listener_orcl.log监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC1ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.100)(PORT=1522)))服务摘要..服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "orcl" 包含 1 个例程。 例程 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功C:/>netstat -anActive Connections Proto Local Address Foreign Address State TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:1485 0.0.0.0:0 LISTENING TCP 0.0.0.0:1518 0.0.0.0:0 LISTENING TCP 0.0.0.0:5900 0.0.0.0:0 LISTENING TCP 127.0.0.1:1025 0.0.0.0:0 LISTENING TCP 127.0.0.1:1806 0.0.0.0:0 LISTENING TCP 127.0.0.1:1814 0.0.0.0:0 LISTENING TCP 192.168.1.100:139 0.0.0.0:0 LISTENING TCP 192.168.1.100:1496 219.133.60.243:8000 CLOSE_WAIT TCP 192.168.1.100:1505 192.168.1.100:1521 ESTABLISHED TCP 192.168.1.100:1521 0.0.0.0:0 LISTENING TCP 192.168.1.100:1521 192.168.1.100:1505 ESTABLISHED TCP 192.168.1.100:1521 192.168.1.100:1808 ESTABLISHED TCP 192.168.1.100:1521 192.168.1.100:1809 ESTABLISHED TCP 192.168.1.100:1522 0.0.0.0:0 LISTENING TCP 192.168.1.100:1808 192.168.1.100:1521 ESTABLISHED TCP 192.168.1.100:1809 192.168.1.100:1521 ESTABLISHED TCP 192.168.1.100:1882 219.232.239.182:80 ESTABLISHED TCP 192.168.1.100:15210 0.0.0.0:0 LISTENING TCP 192.168.40.1:139 0.0.0.0:0 LISTENING TCP 192.168.242.1:139 0.0.0.0:0 LISTENING UDP 0.0.0.0:445 *:*................ 下面是大致测试过程。1.listener.ora内容如下:--=======================================SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orcl)(ORACLE_HOME = E:oracleproduct10.2.0db_1)(SID_NAME = orcl))(SID_DESC =(GLOBAL_DBNAME = test)(ORACLE_HOME = E:oracleproduct10.2.0db_1)(SID_NAME = test)))LISTENER =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = xys)(PORT = 1522)))--=======================================因为listener.ora中port是1522而非默认的1521,因此此时pmon不会动态注册监听:LSNRCTL> status正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production启动日期 25-10月-2008 20:22:50正常运行时间 0 天 0 小时 0 分 7 秒跟踪级别 off安全性 ON: Password or Local OS AuthenticationSNMP OFF监听程序参数文件 e:oracleproduct10.2.0db_1networkadminlistener.ora监听程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log监听端点概要...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))服务摘要..服务 "orcl" 包含 1 个例程。例程 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test" 包含 1 个例程。例程 "test", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功--=============================================通过命令强制注册:SQL> alter system register;系统已更改。上述命令执行之后再次查看pmon是否动态注册了listener,下面结果显示还是没有动态注册:LSNRCTL> status正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production启动日期 25-10月-2008 20:22:50正常运行时间 0 天 0 小时 0 分 12 秒跟踪级别 off安全性 ON: Password or Local OS AuthenticationSNMP OFF监听程序参数文件 e:oracleproduct10.2.0db_1networkadminlistener.ora监听程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log监听端点概要...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))服务摘要..服务 "orcl" 包含 1 个例程。例程 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test" 包含 1 个例程。例程 "test", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功--============================================没有注册的原因是pmon default只会注册port=1521的listener。如果想让pmon动态注册prot以外的监听,此时需要设置参数local_listener=listener:下面设置参数local_listener:SQL> alter system set local_listener=listener;alter system set local_listener=listener*第 1 行出现错误:ORA-02097: 无法修改参数, 因为指定的值无效ORA-00119: 系统参数 LOCAL_LISTENER 的说明无效ORA-00132: 语法错误或无法解析的网络名称 'LISTENER'--提示错误,错误的原因是设置参数local_listener时需要把下面内容增加到服务器端的tnsnames.ora中,因为pmon在动态注册监听时要从tnsnames.ora中读取相关信息:接下来把下面内容增加到服务器端的tnsnames.ora中--======================================LISTENER =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = xys)(PORT = 1522)))--=====================================再次尝试修改local_listener参数,修改成功:SQL> alter system set local_listener=listener;系统已更改。SQL>--=========================================修改之后过一会查看是否动态注册了监听,发现已经注册了:LSNRCTL> status正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production启动日期 25-10月-2008 20:22:50正常运行时间 0 天 0 小时 1 分 50 秒跟踪级别 off安全性 ON: Password or Local OS AuthenticationSNMP OFF监听程序参数文件 e:oracleproduct10.2.0db_1networkadminlistener.ora监听程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log监听端点概要...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))服务摘要..服务 "orcl" 包含 2 个例程。例程 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...服务 "orcl_XPT" 包含 1 个例程。例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...服务 "test" 包含 1 个例程。例程 "test", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功LSNRCTL>2.也可以把local_listener设置为address or address list:SQL> alter system set local_listener='(DESCRIPTION =2 (ADDRESS = (PROTOCOL = TCP)(HOST = xys)(PORT = 1522))3 )';系统已更改。LSNRCTL> stop正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))命令执行成功LSNRCTL> start启动tnslsnr: 请稍候...TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production系统参数文件为e:oracleproduct10.2.0db_1networkadminlistener.ora写入e:oracleproduct10.2.0db_1networkloglistener.log的日志信息监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production启动日期 25-10月-2008 20:39:07正常运行时间 0 天 0 小时 0 分 3 秒跟踪级别 off安全性 ON: Password or Local OS AuthenticationSNMP OFF监听程序参数文件 e:oracleproduct10.2.0db_1networkadminlistener.ora监听程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log监听端点概要...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))服务摘要..服务 "orcl" 包含 1 个例程。例程 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test" 包含 1 个例程。例程 "test", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功LSNRCTL> status正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production启动日期 25-10月-2008 20:39:07正常运行时间 0 天 0 小时 0 分 6 秒跟踪级别 off安全性 ON: Password or Local OS AuthenticationSNMP OFF监听程序参数文件 e:oracleproduct10.2.0db_1networkadminlistener.ora监听程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log监听端点概要...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))服务摘要..服务 "orcl" 包含 1 个例程。例程 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "test" 包含 1 个例程。例程 "test", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功SQL> alter system register;系统已更改。SQL>LSNRCTL> status正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xys)(PORT=1522)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production启动日期 25-10月-2008 20:39:07正常运行时间 0 天 0 小时 0 分 21 秒跟踪级别 off安全性 ON: Password or Local OS AuthenticationSNMP OFF监听程序参数文件 e:oracleproduct10.2.0db_1networkadminlistener.ora监听程序日志文件 e:oracleproduct10.2.0db_1networkloglistener.log监听端点概要...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xys)(PORT=1522)))服务摘要..服务 "orcl" 包含 2 个例程。例程 "orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...服务 "orcl_XPT" 包含 1 个例程。例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...服务 "test" 包含 1 个例程。例程 "test", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功LSNRCTL> 摘自: http://warehouse.itpub.net/post/777/472788