设为首页 收藏本站
查看: 1097|回复: 0

[经验分享] ORACLE之手动注册监听listener。alter system set local_listener="XXX"

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-10-16 10:35:38 | 显示全部楼层 |阅读模式
记录下刚刚做的一个为一个数据库(t02)配置多个监听(listener)的实验,过程有点小曲折。



(1)新增两个测试的监听,listener.ora的配置内容(可纯手动编辑该文件或使用netca)如下:

(LISTENER为系统原有;L1、L2为测试用新增的监听)

    # listener.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\listener.ora  
    # Generated by Oracle configuration tools.  
      
    L2 =  
      (DESCRIPTION_LIST =  
        (DESCRIPTION =  
          (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1523))  
        )  
      )  
      
    L1 =  
      (DESCRIPTION_LIST =  
        (DESCRIPTION =  
          (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1522))  
        )  
      )  
      
    SID_LIST_LISTENER =  
      (SID_LIST =  
        (SID_DESC =  
          (SID_NAME = PLSExtProc)  
          (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)  
          (PROGRAM = extproc)  
        )  
      )  
      
    LISTENER =  
      (DESCRIPTION_LIST =  
        (DESCRIPTION =  
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))  
          (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1521))  
        )  
      )  


(2)配置tnsnames.ora,使数据库(t02)可同时使用以上3个监听:

    # tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora  
    # Generated by Oracle configuration tools.  
      
    T01 =  
      (DESCRIPTION =  
        (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1521))  
        (CONNECT_DATA =  
          (SERVER = DEDICATED)  
          (SERVICE_NAME = t01)  
        )  
      )  
      
    T02 =  
      (DESCRIPTION =  
        (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1521))  
        (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1522))  
        (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1523))  
        (CONNECT_DATA =  
          (SERVER = DEDICATED)  
          (SERVICE_NAME = t02)  
        )  
      )  
      
    EXTPROC_CONNECTION_DATA =  
      (DESCRIPTION =  
        (ADDRESS_LIST =  
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))  
        )  
        (CONNECT_DATA =  
          (SID = PLSExtProc)  
          (PRESENTATION = RO)  
        )  
      )  


(3)检查及测试,发现问题:

检查的时候发现除了默认的LISTENER监听外,L1和L2始终不能注册服务:

    C:\>lsnrctl  
      
    LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 24-7月 -2011 22:19:24  
      
    Copyright (c) 1991, 2005, Oracle.  All rights reserved.  
      
    欢迎来到LSNRCTL, 请键入"help"以获得信息。  
      
    LSNRCTL> status  
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))  
    LISTENER 的 STATUS  
    ------------------------  
    别名                      LISTENER  
    版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production  
    启动日期                  24-7月 -2011 22:14:18  
    正常运行时间              0 天 0 小时 5 分 13 秒  
    跟踪级别                  off  
    安全性                    ON: Local OS Authentication  
    SNMP                      OFF  
    监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora  
    监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\listener.log  
    监听端点概要...  
      (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))  
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1521)))  
    服务摘要..  
    服务 "+ASM_XPT" 包含 1 个例程。  
      例程 "+asm", 状态 BLOCKED, 包含此服务的 1 个处理程序...  
    服务 "+asm" 包含 1 个例程。  
      例程 "+asm", 状态 BLOCKED, 包含此服务的 1 个处理程序...  
    服务 "PLSExtProc" 包含 1 个例程。  
      例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...  
    服务 "t01" 包含 1 个例程。  
      例程 "t01", 状态 READY, 包含此服务的 1 个处理程序...  
    服务 "t01XDB" 包含 1 个例程。  
      例程 "t01", 状态 READY, 包含此服务的 1 个处理程序...  
    服务 "t01_XPT" 包含 1 个例程。  
      例程 "t01", 状态 READY, 包含此服务的 1 个处理程序...  
    命令执行成功  
    LSNRCTL> stop  
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))  
    命令执行成功  
    LSNRCTL> set curr L1  
    目前的监听程序为 L1  
    LSNRCTL> status  
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1522)))  
    LISTENER 的 STATUS  
    ------------------------  
    别名                      L1  
    版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production  
    启动日期                  24-7月 -2011 22:14:19  
    正常运行时间              0 天 0 小时 5 分 26 秒  
    跟踪级别                  off  
    安全性                    ON: Local OS Authentication  
    SNMP                      OFF  
    监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora  
    监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l1.log  
    监听端点概要...  
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1522)))  
    监听程序不支持服务  
    命令执行成功  
    LSNRCTL> set curr L2  
    目前的监听程序为 L2  
    LSNRCTL> status  
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1523)))  
    LISTENER 的 STATUS  
    ------------------------  
    别名                      L2  
    版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production  
    启动日期                  24-7月 -2011 22:14:19  
    正常运行时间              0 天 0 小时 5 分 38 秒  
    跟踪级别                  off  
    安全性                    ON: Local OS Authentication  
    SNMP                      OFF  
    监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora  
    监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l2.log  
    监听端点概要...  
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1523)))  
    监听程序不支持服务  
    命令执行成功  


停止了默认的LISTENER监听后,使用tns进行连接测试的时候报错(ORA-12514):

    C:\Documents and Settings\Administrator>sqlplus scott/tiger@t02  
      
    SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:20:06 2011  
      
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
      
    ERROR:  
    ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务  


(4)分析问题:

一阵google之后发现,如果默认端口不是1521,则需要设置LOCAL_LISTENER来手动指定监听别名:

When configuring the listener to listen on TCP/IP, you should enter the default port of 1521. If you do not, you must configure the LOCAL_LISTENER parameter in the intialization parameter file and resolve the listener name through a naming method.

http://download.oracle.com/docs/ ... 775/listenercfg.htm

(5)解决问题(此处的T02为step 2的tnsnames.ora里面的T02):

    C:\Documents and Settings\Administrator>set oracle_sid=t02  
      
    C:\Documents and Settings\Administrator>sqlplus / as sysdba  
      
    SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:21:55 2011  
      
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
      
    已连接到空闲例程。  
      
    SQL> select status,instance_name from v$instance;  
      
    STATUS                   INSTANCE_NAME  
    ------------------------ --------------------------------  
    OPEN                     t02  
      
    SQL> alter system set local_listener="T02";  
      
    系统已更改。  
      
    SQL>  


(6)验证,再测试:

验证,发现L1、L2已能正常注册服务:

    LSNRCTL> set curr L1  
    目前的监听程序为 L1  
    LSNRCTL> status  
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1522)))  
    LISTENER 的 STATUS  
    ------------------------  
    别名                      L1  
    版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production  
    启动日期                  24-7月 -2011 22:14:19  
    正常运行时间              0 天 0 小时 32 分 54 秒  
    跟踪级别                  off  
    安全性                    ON: Local OS Authentication  
    SNMP                      OFF  
    监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora  
    监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l1.log  
    监听端点概要...  
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1522)))  
    服务摘要..  
    服务 "t02" 包含 1 个例程。  
      例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...  
    服务 "t02XDB" 包含 1 个例程。  
      例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...  
    服务 "t02_XPT" 包含 1 个例程。  
      例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...  
    命令执行成功  
    LSNRCTL> set curr L2  
    目前的监听程序为 L2  
    LSNRCTL> status  
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1523)))  
    LISTENER 的 STATUS  
    ------------------------  
    别名                      L2  
    版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production  
    启动日期                  24-7月 -2011 22:14:19  
    正常运行时间              0 天 0 小时 33 分 6 秒  
    跟踪级别                  off  
    安全性                    ON: Local OS Authentication  
    SNMP                      OFF  
    监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora  
    监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l2.log  
    监听端点概要...  
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1523)))  
    服务摘要..  
    服务 "t02" 包含 1 个例程。  
      例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...  
    服务 "t02XDB" 包含 1 个例程。  
      例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...  
    服务 "t02_XPT" 包含 1 个例程。  
      例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...  
    命令执行成功  
    LSNRCTL>  


再测试,发现scott用户能够正常登录:

    C:\Documents and Settings\Administrator>sqlplus scott/tiger@t02  
      
    SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:24:43 2011  
      
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
      
      
    连接到:  
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production  
    With the Partitioning, OLAP and Data Mining options  
      
    SQL>  


(7)总结

当监听的端口是默认的1521时,PMON会动态注册该监听(listener);

当监听的端口不是默认的1521时,需要使用alter system set local_listener="T02";来手动注册监听。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-26139-1-1.html 上篇帖子: ORA-12514: TNS:listener does not currently know of service … 下篇帖子: Oracle 10g WM_CONCAT行转列函数用法及注意点 listener system
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表