详解Oracle数据库手动注册监听的方法

本文主要介绍了为一个Oracle数据库(t02)配置多个监听(listener)的实验,过程有点小曲折。通过这个实验让我们来学习一下如何手动注册监听。以下是演示的过程。

10年积累的成都网站设计、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有留坝免费网站建设让你可以放心的选择与我们合作。

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

 
 
 
  1. (LISTENER为系统原有;L1、L2为测试用新增的监听)  
  2.  
  3. # listener.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\listener.ora    
  4.  
  5. # Generated by Oracle configuration tools.    
  6.  
  7.  
  8. L2 =    
  9.  
  10. (DESCRIPTION_LIST =    
  11.  
  12. (DESCRIPTION =    
  13.  
  14. (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1523))    
  15.  
  16. )    
  17.  
  18. )    
  19.  
  20. L1 =    
  21.  
  22. (DESCRIPTION_LIST =    
  23.  
  24. (DESCRIPTION =    
  25.  
  26. (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1522))    
  27.  
  28. )    
  29.  
  30. )    
  31.  
  32. SID_LIST_LISTENER =    
  33.  
  34. (SID_LIST =    
  35.  
  36. (SID_DESC =    
  37.  
  38. (SID_NAME = PLSExtProc)    
  39.  
  40. (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)    
  41.  
  42. (PROGRAM = extproc)    
  43.  
  44. )    
  45.  
  46. )    
  47.  
  48. LISTENER =    
  49.  
  50. (DESCRIPTION_LIST =    
  51.  
  52. (DESCRIPTION =    
  53.  
  54. (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))    
  55.  
  56. (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1521))    
  57.  
  58. )    
  59.  
  60. )   

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

 
 
 
  1. # tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora    
  2.  
  3. # Generated by Oracle configuration tools.    
  4.  
  5. T01 =    
  6.  
  7. (DESCRIPTION =    
  8.  
  9. (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1521))    
  10.  
  11. (CONNECT_DATA =    
  12.  
  13. (SERVER = DEDICATED)    
  14.  
  15. (SERVICE_NAME = t01)    
  16.  
  17. )    
  18.  
  19. )    
  20.  
  21. T02 =    
  22.  
  23. (DESCRIPTION =    
  24.  
  25. (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1521))    
  26.  
  27. (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1522))    
  28.  
  29. (ADDRESS = (PROTOCOL = TCP)(HOST = PC1255-20110528)(PORT = 1523))    
  30.  
  31. (CONNECT_DATA =    
  32.  
  33. (SERVER = DEDICATED)    
  34.  
  35. (SERVICE_NAME = t02)    
  36.  
  37. )    
  38.  
  39. )    
  40.  
  41. EXTPROC_CONNECTION_DATA =    
  42.  
  43. (DESCRIPTION =    
  44.  
  45. (ADDRESS_LIST =    
  46.  
  47. (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))    
  48.  
  49. )    
  50.  
  51. (CONNECT_DATA =    
  52.  
  53. (SID = PLSExtProc)    
  54.  
  55. (PRESENTATION = RO)    
  56.  
  57. )    
  58.  
  59. )   

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

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

 
 
 
  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.  
  11. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))    
  12.  
  13. LISTENER 的 STATUS    
  14.  
  15. ------------------------     
  16.  
  17. 别名                      LISTENER    
  18.  
  19. 版本  
  20.  
  21. TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production    
  22.  
  23. 启动日期                  24-7月 -2011 22:14:18    
  24.  
  25. 正常运行时间              0 天 0 小时 5 分 13 秒    
  26.  
  27. 跟踪级别                  off    
  28.  
  29. 安全性  
  30.  
  31. ON: Local OS Authentication    
  32.  
  33. SNMP                      OFF    
  34.  
  35. 监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora    
  36.  
  37. 监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\listener.log    
  38.  
  39. 监听端点概要...    
  40.  
  41. (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))    
  42.  
  43. (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1521)))    
  44.  
  45. 服务摘要..    
  46.  
  47. 服务 "+ASM_XPT" 包含 1 个例程。    
  48.  
  49. 例程 "+asm", 状态 BLOCKED, 包含此服务的 1 个处理程序...    
  50.  
  51. 服务 "+asm" 包含 1 个例程。    
  52.  
  53. 例程 "+asm", 状态 BLOCKED, 包含此服务的 1 个处理程序...    
  54.  
  55. 服务 "PLSExtProc" 包含 1 个例程。    
  56.  
  57. 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...    
  58.  
  59. 服务 "t01" 包含 1 个例程。    
  60.  
  61. 例程 "t01", 状态 READY, 包含此服务的 1 个处理程序...    
  62.  
  63. 服务 "t01XDB" 包含 1 个例程。    
  64.  
  65. 例程 "t01", 状态 READY, 包含此服务的 1 个处理程序...    
  66.  
  67. 服务 "t01_XPT" 包含 1 个例程。    
  68.  
  69. 例程 "t01", 状态 READY, 包含此服务的 1 个处理程序...    
  70.  
  71. 命令执行成功    
  72.  
  73. LSNRCTL> stop    
  74.  
  75. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))    
  76.  
  77. 命令执行成功    
  78.  
  79. LSNRCTL> set curr L1    
  80.  
  81. 目前的监听程序为 L1    
  82.  
  83. LSNRCTL> status    
  84.  
  85. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1522)))    
  86.  
  87. LISTENER 的 STATUS    
  88.  
  89. ------------------------     
  90.  
  91. 别名                      L1    
  92.  
  93. 版本  
  94.  
  95. TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production    
  96.  
  97. 启动日期                  24-7月 -2011 22:14:19    
  98.  
  99. 正常运行时间              0 天 0 小时 5 分 26 秒    
  100.  
  101. 跟踪级别                  off    
  102.  
  103. 安全性  
  104.  
  105. ON: Local OS Authentication    
  106.  
  107. SNMP                      OFF    
  108.  
  109. 监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora    
  110.  
  111. 监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l1.log    
  112.  
  113. 监听端点概要...    
  114.  
  115. (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1522)))    
  116.  
  117. 监听程序不支持服务    
  118.  
  119. 命令执行成功    
  120.  
  121. LSNRCTL> set curr L2    
  122.  
  123. 目前的监听程序为 L2    
  124.  
  125. LSNRCTL> status    
  126.  
  127. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1523)))    
  128.  
  129. LISTENER 的 STATUS    
  130.  
  131. ------------------------     
  132.  
  133. 别名                      L2    
  134.  
  135. 版本  
  136.  
  137. TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production    
  138.  
  139. 启动日期                  24-7月 -2011 22:14:19    
  140.  
  141. 正常运行时间              0 天 0 小时 5 分 38 秒    
  142.  
  143. 跟踪级别                  off    
  144.  
  145. 安全性  
  146.  
  147. ON: Local OS Authentication    
  148.  
  149. SNMP                      OFF    
  150.  
  151. 监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora    
  152.  
  153. 监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l2.log    
  154.  
  155. 监听端点概要...    
  156.  
  157. (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1523)))    
  158.  
  159. 监听程序不支持服务    
  160.  
  161. 命令执行成功    
  162.  
  163. 停止了默认的LISTENER监听后,使用tns进行连接测试的时候报错(ORA-12514):  
  164.  
  165. C:\Documents and Settings\Administrator>sqlplus scott/tiger@t02    
  166.  
  167. SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:20:06 2011    
  168.  
  169. Copyright (c) 1982, 2005, Oracle.  All rights reserved.    
  170.  
  171. ERROR:    
  172.  
  173. ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务   

#p#

4.分析问题:

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

 
 
 
  1. When configuring the listener to listen on TCP/IP, you should enter the default port of 1521. If you do not,   
  2.  
  3. you must configure the LOCAL_LISTENER parameter in the intialization parameter file and resolve the listener name through a naming method.  
  4.  
  5. http://download.oracle.com/docs/cd/B13789_01/network.101/b10775/listenercfg.htm 

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

 
 
 
  1. C:\Documents and Settings\Administrator>set oracle_sid=t02    
  2.  
  3. C:\Documents and Settings\Administrator>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. ------------------------ --------------------------------     
  16.  
  17. OPEN                     t02    
  18.  
  19. SQL> alter system set local_listener="T02";    
  20.  
  21. 系统已更改。    
  22.  
  23. SQL>    
  24.  
  25. C:\Documents and Settings\Administrator>set oracle_sid=t02 
  26.  
  27. C:\Documents and Settings\Administrator>sqlplus / as sysdba  
  28.  
  29. SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:21:55 2011  
  30.  
  31. Copyright (c) 1982, 2005, Oracle. All rights reserved.  
  32.  
  33. 已连接到空闲例程。  
  34.  
  35. SQL> select status,instance_name from v$instance;  
  36.  
  37. STATUS INSTANCE_NAME  
  38.  
  39. ------------------------ --------------------------------  
  40.  
  41. OPEN t02  
  42.  
  43. SQL> alter system set local_listener="T02";  
  44.  
  45. 系统已更改。  
  46.  
  47. SQL> 

6.验证,再测试:

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

 
 
 
  1. LSNRCTL> set curr L1    
  2.  
  3. 目前的监听程序为 L1    
  4.  
  5. LSNRCTL> status    
  6.  
  7. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1522)))    
  8.  
  9. LISTENER 的 STATUS    
  10.  
  11. ------------------------     
  12.  
  13. 别名                      L1    
  14.  
  15. 版本  
  16.  
  17. TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production    
  18.  
  19. 启动日期                  24-7月 -2011 22:14:19    
  20.  
  21. 正常运行时间              0 天 0 小时 32 分 54 秒    
  22.  
  23. 跟踪级别                  off    
  24.  
  25. 安全性  
  26.  
  27. ON: Local OS Authentication    
  28.  
  29. SNMP                      OFF    
  30.  
  31. 监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora    
  32.  
  33. 监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l1.log    
  34.  
  35. 监听端点概要...    
  36.  
  37. (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1522)))    
  38.  
  39. 服务摘要..    
  40.  
  41. 服务 "t02" 包含 1 个例程。    
  42.  
  43. 例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...    
  44.  
  45. 服务 "t02XDB" 包含 1 个例程。    
  46.  
  47. 例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...    
  48.  
  49. 服务 "t02_XPT" 包含 1 个例程。    
  50.  
  51. 例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...    
  52.  
  53. 命令执行成功    
  54.  
  55. LSNRCTL> set curr L2    
  56.  
  57. 目前的监听程序为 L2    
  58.  
  59. LSNRCTL> status    
  60.  
  61. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1523)))    
  62.  
  63. LISTENER 的 STATUS    
  64.  
  65. ------------------------     
  66.  
  67. 别名                      L2    
  68.  
  69. 版本  
  70.  
  71. TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production    
  72.  
  73. 启动日期                  24-7月 -2011 22:14:19    
  74.  
  75. 正常运行时间              0 天 0 小时 33 分 6 秒    
  76.  
  77. 跟踪级别                  off    
  78.  
  79. 安全性  
  80.  
  81. ON: Local OS Authentication    
  82.  
  83. SNMP                      OFF    
  84.  
  85. 监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora    
  86.  
  87. 监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l2.log    
  88.  
  89. 监听端点概要...    
  90.  
  91. (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1523)))    
  92.  
  93. 服务摘要..    
  94.  
  95. 服务 "t02" 包含 1 个例程。    
  96.  
  97. 例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...    
  98.  
  99. 服务 "t02XDB" 包含 1 个例程。    
  100.  
  101. 例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...    
  102.  
  103. 服务 "t02_XPT" 包含 1 个例程。    
  104.  
  105. 例程 "t02", 状态 READY, 包含此服务的 1 个处理程序...    
  106.  
  107. 命令执行成功    
  108.  
  109. LSNRCTL>    
  110.  
  111. 再测试,发现scott用户能够正常登录:  
  112.  
  113. C:\Documents and Settings\Administrator>sqlplus scott/tiger@t02    
  114.  
  115. SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:24:43 2011    
  116.  
  117. Copyright (c) 1982, 2005, Oracle.  All rights reserved.    
  118.  
  119. 连接到:    
  120.  
  121. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production    
  122.  
  123. With the Partitioning, OLAP and Data Mining options    
  124.  
  125. SQL>   

7.总结

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

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

关于Oracle数据库注册监听的知识就介绍到这里,希望能带给您一些收获!

【编辑推荐】

  1. 通过SDE服务直连Oracle数据库的配置
  2. 一些很实用的Oracle数据库优化策略总结篇
  3. Java和Ibatis调用存储过程并取得返回值详解
  4. Oracle数据库使用存储过程创建自动增长列
  5. Oracle、MySQL和PostgreSQL的比较与选择

当前名称:详解Oracle数据库手动注册监听的方法
标题来源:http://www.csdahua.cn/qtweb/news41/408241.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网