记录下刚刚做的一个为一个数据库(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. 把eclipse"中文版"变成"英文版"

    在Eclipse.exe当前路径下,直接新建快捷方式,右键属性,添加如下参数即可 eclipse.exe -nl en

  2. BT5之Metasploit[MSF]连接postgresql数据库

    1,先查看postgresql的端口,默认是自动开启的,端口7337 .   root@bt:~# netstat -tnpl |grep postgres tcp        0      0 1 ...

  3. make -f dc_debug.mak 提示错误"/usr/bin/ld:can not find -l***"解决办法

    在公司不同服务器上"make -f ***"程序的时候,有的服务器可以编译通过,有的却提示"/usr/bin/ld:can not find -l***"的错误 ...

  4. winform窗口打开后文本框的默认焦点设置

    原文:http://blog.csdn.net/kongwei521/article/details/6871411 winform窗口打开后文本框的默认焦点设置,进入窗口后默认聚焦到某个文本框,两种 ...

  5. Chp4: Trees and Graphs

    1.Type of Tree 1. Binary Tree: a binary tree is a tree in which each node has at most two child node ...

  6. POJ 1988 Cube Stacking(带权并查集)

    哈哈,一次AC. 题意:给你 1-n 编号的立方体,然后移动包含指定编号的立方体的堆移到另一个堆上边, 询问指定的编号立方体下面有多少个立方体. 思路:由于并查集是存储的是它的父亲,那么只能从父亲那里 ...

  7. TYVJ P1016 装箱问题

    P1016 装箱问题 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 太原成成中学第2次模拟赛 第三道 描述 有一个箱子容量为v(正整数,o≤v≤20000) ...

  8. 51Nod 有限背包计数问题 题解报告

    首先这道题理论上是可以做到O(nlogn)的,因为OEIS上有一个明显可以用多项式乘法加速的式子 但是由于模数不是很兹磁,所以导致nlogn很难写 在这里说一下O(n*sqrt(n))的做法 首先我们 ...

  9. 国内为什么没有好的 Stack Overflow 的模仿者?

    国内为什么没有好的 Stack Overflow 的模仿者? 个人觉得, 高端的程序员会直接上stackoverflow提问, 所以国内中文的stackoverflow必然面对低端程序员. 鉴于中国程 ...

  10. Generic repository pattern and Unit of work with Entity framework

    原文 Generic repository pattern and Unit of work with Entity framework Repository pattern is an abstra ...