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

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

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

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

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

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

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

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

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

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

  1. C:\Documents and Settings\Administrator>sqlplus scott/tiger@t02
  2. SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:20:06 2011
  3. Copyright (c) 1982, 2005, Oracle.  All rights reserved.
  4. ERROR:
  5. 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):

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

(6)验证,再测试:

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

  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:\oracle\product\10.2.0\db_1\network\admin\listener.ora
  15. 监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l1.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:\oracle\product\10.2.0\db_1\network\admin\listener.ora
  40. 监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l2.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用户能够正常登录:

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

(7)总结

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

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

ORACLE之手动注册监听listener。alter system set local_listener="XXX"的更多相关文章

  1. ORACLE启用非默认监听端口

    1.修改listener.ora文件 LISTENER_TEST =         (DESCRIPTION =                 (ADDRESS = (PROTOCOL = TCP ...

  2. The listener supports no services oracle注册监听

    问题登场: [oracle@my-e450 ~]$ lsnrctl status …… The listener supports no servicesThe command completed s ...

  3. oracle静态与动态监听

    在运行lsnrctl命令的status时,常会看到如下返回值: 服务“test”包含1个例程.    例程"mydata",状态 UNKOWN,包含此服务的一个处理程序... 服务 ...

  4. oracle之 单实例监听修改端口

    Oracle 单一主机多个实例多个监听器配置要点   1. 一台服务器主机, 有多个实例, 如: TSDB/ORCL; 又需要配置多个监听器 2. 需要指定不同的LISTENER端口   3.pmon ...

  5. oracle 11g rac修改监听端口(远程监听和本地监听)

    转至:https://www.cnblogs.com/yj411511/p/12459533.html 目录 1.修改远程监听端口 1.1 查看远程监听状态 1.2 修改SCAN listener端口 ...

  6. Oracle 11gR2 RAC修改监听默认端口

    一.修改SCAN listener port 1.1 修改SCAN listener port 1.2 重启SCAN listener生效新端口 1.3 确认更改 二.修改Listener Ports ...

  7. oracle 11g 修改默认监听端口1521

    OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - ...

  8. 关于Oracle报“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误

    关于Oracle报“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误原因:listener.ora中没有指定监听服务器名. 如下是解决思路: 尝试1.通过重启服务的方式启动数 ...

  9. Oracle启动两个监听

    接上篇:Oracle服务器修改IP后 Oracle服务器更换IP后,办公网络里面可以正常访问了,外地的同事,连了vpn 也可以访问,以为可以收工回家,突然又有同事过来说,机房的服务器ping不通新的i ...

随机推荐

  1. 导入 github 步骤

    https://github.com/dotnet/corefx       如果出现未能找到解决方案的情况,则找项目文件打开,如:  

  2. function复习

    #include <iostream> #include <functional> using namespace std; int fun(int a) { std::cou ...

  3. SSL 握手过程

    SSL协议的握手过程 SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术.SSL 的握手协议非常有效的让客户和服务器 ...

  4. Appium绑定

    锁定 锁定屏幕 # python driver.lock(5) 将 app 置于后台 把当前应用放到后台去 # python driver.background_app(5) 收起键盘 收起键盘 # ...

  5. [转载]Java学习这七年

    从2005那会做自动化测试开始接触Java开始,至今近7年.今天正好项目结束,趁机整理下思路,确定后续方向. 前三个年头基本上集中于Java基础的学习,包括设计模式,从完全不懂,到看的懂但似乎又不懂, ...

  6. 暑假集训单切赛第一场 CF 266E More Queries to Array(线段树+二项式展开式)

    比赛时,第二题就是做的这个,当时果断没仔细考虑,直接用线段树暴力求.结果易想而知,超时了. 比赛后搜了搜题解,恍然大悟. 思路:显然用线段树,但是由于每次查询都会有变,所以不可能存储题目中的式子.   ...

  7. Jquery+Jquery-easyui的倒计时

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 适合我胃口的angular.js学习资料

    断断续续弄了半年的ANGULAR.JS学习资料,网上下载了N多资料,测试了很多次. 现在只能算是入门,因时间问题,现在要转入其它领域. 如果以后要拾起来,下面这个PDF比较对我胃口. <Angu ...

  9. struts2学习笔记(3)——struts2的局部类型转换

    今天又学到了一个新的东西,就是struts2的类型转换. 为什么要类型转换? 今天我就要传一个点的坐标给你,保存时用一个自定义的Point类来保存. 因为在表单里面传过去的是字符串,如“12,23”, ...

  10. 阻止事件冒泡(stopPropagation和cancelBubble)和阻止默认行为(preventDefault和returnValue)

    <div id="divId1" style="width:500px;height:500px;background-color:#3ac;text-align: ...