• ORACLE之手动注册监听listener。alter system set local_listener="XXX"


    记录下刚刚做的一个为一个数据库(t02)配置多个监听(listener)的实验,过程有点小曲折。

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

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

    [sql] view plaincopy
     
    1. # listener.ora Network Configuration File: D:oracleproduct10.2.0db_1 etworkadminlistener.ora  
    2. # Generated by Oracle configuration tools.  
    3.   
    4. L2 =  
    5.   (DESCRIPTION_LIST =  
    6.     (DESCRIPTION =  
    7.       (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1523))  
    8.     )  
    9.   )  
    10.   
    11. L1 =  
    12.   (DESCRIPTION_LIST =  
    13.     (DESCRIPTION =  
    14.       (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1522))  
    15.     )  
    16.   )  
    17.   
    18. SID_LIST_LISTENER =  
    19.   (SID_LIST =  
    20.     (SID_DESC =  
    21.       (SID_NAME = PLSExtProc)  
    22.       (ORACLE_HOME = D:oracleproduct10.2.0db_1)  
    23.       (PROGRAM = extproc)  
    24.     )  
    25.   )  
    26.   
    27. LISTENER =  
    28.   (DESCRIPTION_LIST =  
    29.     (DESCRIPTION =  
    30.       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))  
    31.       (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1521))  
    32.     )  
    33.   )  


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

    [sql] view plaincopy
     
    1. # tnsnames.ora Network Configuration File: D:oracleproduct10.2.0db_1 etworkadmin nsnames.ora  
    2. # Generated by Oracle configuration tools.  
    3.   
    4. T01 =  
    5.   (DESCRIPTION =  
    6.     (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1521))  
    7.     (CONNECT_DATA =  
    8.       (SERVER = DEDICATED)  
    9.       (SERVICE_NAME = t01)  
    10.     )  
    11.   )  
    12.   
    13. T02 =  
    14.   (DESCRIPTION =  
    15.     (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1521))  
    16.     (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1522))  
    17.     (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1523))  
    18.     (CONNECT_DATA =  
    19.       (SERVER = DEDICATED)  
    20.       (SERVICE_NAME = t02)  
    21.     )  
    22.   )  
    23.   
    24. EXTPROC_CONNECTION_DATA =  
    25.   (DESCRIPTION =  
    26.     (ADDRESS_LIST =  
    27.       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))  
    28.     )  
    29.     (CONNECT_DATA =  
    30.       (SID = PLSExtProc)  
    31.       (PRESENTATION = RO)  
    32.     )  
    33.   )  


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

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

    [sql] view plaincopy
     
    1. C:>lsnrctl  
    2.   
    3. LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 24-7月 -2011 22:19:24  
    4.   
    5. Copyright (c) 1991, 2005, Oracle.  All rights reserved.  
    6.   
    7. 欢迎来到LSNRCTL, 请键入"help"以获得信息。  
    8.   
    9. LSNRCTL> status  
    10. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))  
    11. LISTENER 的 STATUS  
    12. ------------------------  
    13. 别名                      LISTENER  
    14. 版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production  
    15. 启动日期                  24-7月 -2011 22:14:18  
    16. 正常运行时间              0 天 0 小时 5 分 13 秒  
    17. 跟踪级别                  off  
    18. 安全性                    ON: Local OS Authentication  
    19. SNMP                      OFF  
    20. 监听程序参数文件          D:oracleproduct10.2.0db_1 etworkadminlistener.ora  
    21. 监听程序日志文件          D:oracleproduct10.2.0db_1 etworkloglistener.log  
    22. 监听端点概要...  
    23.   (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1ipc)))  
    24.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1521)))  
    25. 服务摘要..  
    26. 服务 "+ASM_XPT" 包含 1 个例程。  
    27.   例程 "+asm", 状态 BLOCKED, 包含此服务的 1 个处理程序...  
    28. 服务 "+asm" 包含 1 个例程。  
    29.   例程 "+asm", 状态 BLOCKED, 包含此服务的 1 个处理程序...  
    30. 服务 "PLSExtProc" 包含 1 个例程。  
    31.   例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...  
    32. 服务 "t01" 包含 1 个例程。  
    33.   例程 "t01", 状态 READY, 包含此服务的 1 个处理程序...  
    34. 服务 "t01XDB" 包含 1 个例程。  
    35.   例程 "t01", 状态 READY, 包含此服务的 1 个处理程序...  
    36. 服务 "t01_XPT" 包含 1 个例程。  
    37.   例程 "t01", 状态 READY, 包含此服务的 1 个处理程序...  
    38. 命令执行成功  
    39. LSNRCTL> stop  
    40. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))  
    41. 命令执行成功  
    42. LSNRCTL> set curr L1  
    43. 目前的监听程序为 L1  
    44. LSNRCTL> status  
    45. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1522)))  
    46. LISTENER 的 STATUS  
    47. ------------------------  
    48. 别名                      L1  
    49. 版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production  
    50. 启动日期                  24-7月 -2011 22:14:19  
    51. 正常运行时间              0 天 0 小时 5 分 26 秒  
    52. 跟踪级别                  off  
    53. 安全性                    ON: Local OS Authentication  
    54. SNMP                      OFF  
    55. 监听程序参数文件          D:oracleproduct10.2.0db_1 etworkadminlistener.ora  
    56. 监听程序日志文件          D:oracleproduct10.2.0db_1 etworklogl1.log  
    57. 监听端点概要...  
    58.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1522)))  
    59. 监听程序不支持服务  
    60. 命令执行成功  
    61. LSNRCTL> set curr L2  
    62. 目前的监听程序为 L2  
    63. LSNRCTL> status  
    64. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1523)))  
    65. LISTENER 的 STATUS  
    66. ------------------------  
    67. 别名                      L2  
    68. 版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production  
    69. 启动日期                  24-7月 -2011 22:14:19  
    70. 正常运行时间              0 天 0 小时 5 分 38 秒  
    71. 跟踪级别                  off  
    72. 安全性                    ON: Local OS Authentication  
    73. SNMP                      OFF  
    74. 监听程序参数文件          D:oracleproduct10.2.0db_1 etworkadminlistener.ora  
    75. 监听程序日志文件          D:oracleproduct10.2.0db_1 etworklogl2.log  
    76. 监听端点概要...  
    77.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1523)))  
    78. 监听程序不支持服务  
    79. 命令执行成功  


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

    [sql] view plaincopy
     
    1. C:Documents and SettingsAdministrator>sqlplus scott/tiger@t02  
    2.   
    3. SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:20:06 2011  
    4.   
    5. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
    6.   
    7. ERROR:  
    8. 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/cd/B13789_01/network.101/b10775/listenercfg.htm

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

    [sql] view plaincopy
     
    1. C:Documents and SettingsAdministrator>set oracle_sid=t02  
    2.   
    3. C:Documents and SettingsAdministrator>sqlplus / as sysdba  
    4.   
    5. SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:21:55 2011  
    6.   
    7. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
    8.   
    9. 已连接到空闲例程。  
    10.   
    11. SQL> select status,instance_name from v$instance;  
    12.   
    13. STATUS                   INSTANCE_NAME  
    14. ------------------------ --------------------------------  
    15. OPEN                     t02  
    16.   
    17. SQL> alter system set local_listener="T02";  
    18.   
    19. 系统已更改。  
    20.   
    21. SQL>  


    (6)验证,再测试:

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

    [sql] view plaincopy
     
    1. LSNRCTL> set curr L1  
    2. 目前的监听程序为 L1  
    3. LSNRCTL> status  
    4. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1522)))  
    5. LISTENER 的 STATUS  
    6. ------------------------  
    7. 别名                      L1  
    8. 版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production  
    9. 启动日期                  24-7月 -2011 22:14:19  
    10. 正常运行时间              0 天 0 小时 32 分 54 秒  
    11. 跟踪级别                  off  
    12. 安全性                    ON: Local OS Authentication  
    13. SNMP                      OFF  
    14. 监听程序参数文件          D:oracleproduct10.2.0db_1 etworkadminlistener.ora  
    15. 监听程序日志文件          D:oracleproduct10.2.0db_1 etworklogl1.log  
    16. 监听端点概要...  
    17.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1522)))  
    18. 服务摘要..  
    19. 服务 "t02" 包含 1 个例程。  
    20.   例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...  
    21. 服务 "t02XDB" 包含 1 个例程。  
    22.   例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...  
    23. 服务 "t02_XPT" 包含 1 个例程。  
    24.   例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...  
    25. 命令执行成功  
    26. LSNRCTL> set curr L2  
    27. 目前的监听程序为 L2  
    28. LSNRCTL> status  
    29. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1523)))  
    30. LISTENER 的 STATUS  
    31. ------------------------  
    32. 别名                      L2  
    33. 版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production  
    34. 启动日期                  24-7月 -2011 22:14:19  
    35. 正常运行时间              0 天 0 小时 33 分 6 秒  
    36. 跟踪级别                  off  
    37. 安全性                    ON: Local OS Authentication  
    38. SNMP                      OFF  
    39. 监听程序参数文件          D:oracleproduct10.2.0db_1 etworkadminlistener.ora  
    40. 监听程序日志文件          D:oracleproduct10.2.0db_1 etworklogl2.log  
    41. 监听端点概要...  
    42.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1523)))  
    43. 服务摘要..  
    44. 服务 "t02" 包含 1 个例程。  
    45.   例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...  
    46. 服务 "t02XDB" 包含 1 个例程。  
    47.   例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...  
    48. 服务 "t02_XPT" 包含 1 个例程。  
    49.   例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...  
    50. 命令执行成功  
    51. LSNRCTL>  


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

    [sql] view plaincopy
     
    1. C:Documents and SettingsAdministrator>sqlplus scott/tiger@t02  
    2.   
    3. SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:24:43 2011  
    4.   
    5. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
    6.   
    7.   
    8. 连接到:  
    9. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production  
    10. With the Partitioning, OLAP and Data Mining options  
    11.   
    12. SQL>  


    (7)总结

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

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

  • 相关阅读:
    枚举和字符串转换
    JavaScript string.format
    Jquery 中toggle的用法举例
    JQuery 实现倒计时
    找位置
    图算法
    文件操作总结
    动态规划——总结
    回文字符串
    a+b_1
  • 原文地址:https://www.cnblogs.com/hllnj2008/p/4026680.html
Copyright © 2020-2023  润新知