pmon只会动态注册port等于1521的监听,否则pmon不能动态注册listener,要想让pmon动态注册listener,需要设置local_listener参数。 下面是大致测试过程。 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 - Produ ction 启动日期 25-10月-2008 20:22:50 正常运行时间 0 天 0 小时 0 分 7 秒 跟踪级别 off 安全性 ON: Password or Local OS Authentication SNMP OFF 监听程序参数文件 e:oracleproduct10.2.0db_1networkadminlistener.o ra 监听程序日志文件 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 - Produ ction 启动日期 25-10月-2008 20:22:50 正常运行时间 0 天 0 小时 0 分 12 秒 跟踪级别 off 安全性 ON: Password or Local OS Authentication SNMP OFF 监听程序参数文件 e:oracleproduct10.2.0db_1networkadminlistener.o ra 监听程序日志文件 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 - Produ ction 启动日期 25-10月-2008 20:22:50 正常运行时间 0 天 0 小时 1 分 50 秒 跟踪级别 off 安全性 ON: Password or Local OS Authentication SNMP OFF 监听程序参数文件 e:oracleproduct10.2.0db_1networkadminlistener.o ra 监听程序日志文件 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 - Produ ction 启动日期 25-10月-2008 20:39:07 正常运行时间 0 天 0 小时 0 分 3 秒 跟踪级别 off 安全性 ON: Password or Local OS Authentication SNMP OFF 监听程序参数文件 e:oracleproduct10.2.0db_1networkadminlistener.o ra 监听程序日志文件 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 - Produ ction 启动日期 25-10月-2008 20:39:07 正常运行时间 0 天 0 小时 0 分 6 秒 跟踪级别 off 安全性 ON: Password or Local OS Authentication SNMP OFF 监听程序参数文件 e:oracleproduct10.2.0db_1networkadminlistener.o ra 监听程序日志文件 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 - Produ ction 启动日期 25-10月-2008 20:39:07 正常运行时间 0 天 0 小时 0 分 21 秒 跟踪级别 off 安全性 ON: Password or Local OS Authentication SNMP OFF 监听程序参数文件 e:oracleproduct10.2.0db_1networkadminlistener.o ra 监听程序日志文件 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> |
|