第一种情况:只是修改默认端口
1.当前监听状态:
C:Windowssystem32>lsnrctl status LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 05-3月 -2015 11:48:45 Copyright (c) 1991, 2010, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zen-pc)(PORT=1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production 启动日期 05-3月 -2015 11:38:26 正常运行时间 0 天 0 小时 10 分 23 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 D:oracleInstallproduct11.2.0dbhome_1 etworkadminlistener.ora 监听程序日志文件 d:oracleinstalldiag nslsnrzen-pclisteneralertlog.xml 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zen-pc)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1521ipc))) 服务摘要.. 服务 "CLRExtProc" 包含 1 个实例。 实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "orclXDB" 包含 1 个实例。 实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序... 服务 "zen" 包含 1 个实例。 实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序... 命令执行成功
2.修改监听端口:
# listener.ora Network Configuration File: D:oracleInstallproduct11.2.0dbhome_1 etworkadminlistener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = D:oracleInstallproduct11.2.0dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:D:oracleInstallproduct11.2.0dbhome_1inoraclr11.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = zen-pc)(PORT = 1522)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) ADR_BASE_LISTENER = D:oracleInstall
3.重启监听:
C:Windowssystem32>lsnrctl status LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 05-3月 -2015 12:32:53 Copyright (c) 1991, 2010, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zen-pc)(PORT=1522))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production 启动日期 05-3月 -2015 11:56:26 正常运行时间 0 天 0 小时 36 分 30 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 D:oracleInstallproduct11.2.0dbhome_1 etworkadminlistener.ora 监听程序日志文件 d:oracleinstalldiag nslsnrzen-pclisteneralertlog.xml 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zen-pc)(PORT=1522))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1521ipc))) 服务摘要.. 服务 "CLRExtProc" 包含 1 个实例。 实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 命令执行成功 C:Windowssystem32> 手动注册: SQL> alter system register; 系统已更改。 SQL> C:Windowssystem32>lsnrctl status LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 05-3月 -2015 12:40:54 Copyright (c) 1991, 2010, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zen-pc)(PORT=1522))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production 启动日期 05-3月 -2015 11:56:26 正常运行时间 0 天 0 小时 44 分 31 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 D:oracleInstallproduct11.2.0dbhome_1 etworkadminlistener.ora 监听程序日志文件 d:oracleinstalldiag nslsnrzen-pclisteneralertlog.xml 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zen-pc)(PORT=1522))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1521ipc))) 服务摘要.. 服务 "CLRExtProc" 包含 1 个实例。 实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 命令执行成功 C:Windowssystem32>
可以看出实例还是没有注册上。在oracle的实例中指定本地监听
SQL> show parameters listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ listener_networks string local_listener string remote_listener string SQL> alter system set local_listener=LISTENER ; alter system set local_listener=LISTENER * 第 1 行出现错误: ORA-02097: 无法修改参数, 因为指定的值无效 ORA-00119: 系统参数 LOCAL_LISTENER 的说明无效 ORA-00132: 语法错误或无法解析的网络名称 'LISTENER' 修改D:oracleInstallproduct11.2.0dbhome_1NETWORKADMIN nsnames.ora,添加: LISTENER22 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = zen-pc)(PORT = 1522)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = zen) ) ) 重新设置 SQL> show parameters listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ listener_networks string local_listener string remote_listener string SQL> alter system set local_listener=LISTENER22 ; 系统已更改。 SQL> show parameters listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ listener_networks string local_listener string LISTENER22 remote_listener string SQL> 再次查看监听状态 C:Windowssystem32>lsnrctl status LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 05-3月 -2015 13:50:01 Copyright (c) 1991, 2010, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zen-pc)(PORT=1522))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production 启动日期 05-3月 -2015 11:56:26 正常运行时间 0 天 1 小时 53 分 38 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 D:oracleInstallproduct11.2.0dbhome_1 etworkadminlistener.ora 监听程序日志文件 d:oracleinstalldiag nslsnrzen-pclisteneralertlog.xml 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zen-pc)(PORT=1522))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1521ipc))) 服务摘要.. 服务 "CLRExtProc" 包含 1 个实例。 实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "orclXDB" 包含 1 个实例。 实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序... 服务 "zen" 包含 1 个实例。 实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序... 命令执行成功 C:Windowssystem32>
至此监听成功注册上。
第二种情况监听的名字非默认,端口也非默认:
SQL> show parameters listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ listener_networks string local_listener string LISTENER22 remote_listener string SQL> C:Windowssystem32>lsnrctl status LISTENER_NEW LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 05-3月 -2015 14:13:22 Copyright (c) 1991, 2010, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zen-pc)(PORT=1522))) LISTENER 的 STATUS ------------------------ 别名 LISTENER_NEW 版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production 启动日期 05-3月 -2015 14:12:19 正常运行时间 0 天 0 小时 1 分 7 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 D:oracleInstallproduct11.2.0dbhome_1 etworkadminlistener.ora 监听程序日志文件 d:oracleinstalldiag nslsnrzen-pclistener_newalertlog.xml 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=zen-pc)(PORT=1522))) 服务摘要.. 服务 "orclXDB" 包含 1 个实例。 实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序... 服务 "zen" 包含 1 个实例。 实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序... 命令执行成功 C:Windowssystem32>
结论:1.实例注册监听,确切的说pmon在注册监听的时候监听的名称不重要。
2.pmon在注册监听的时候会找默认的端口1521,如果端口不是这个就需要手动指定监听的端口以便于pmon发现将实例注册上。
3.非标准端口的监听在指定监听名称时无需和tnsnames.ora中指定的网络名字相同,
即文中示例中的(LISTENER_NEW与 local_listener string LISTENER22可以不同)。应此乐大师此文中的与此相关的表述有些许失误http://blog.csdn.net/leshami/article/details/6396989。