记录下刚刚做的一个为一个数据库(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. MoveManager管理类

    MoveManager:移动管理类 struct MoveOpt { int cur_seq; ObjecInfo* obj; }; std::map<ObjID, MoveOpt> m_ ...

  2. 1-Highcharts环境介绍及配置

    Highcharts:功能强大.开源.美观.图表丰富.兼容绝大多数浏览器的纯js图表库,废话不多说,直接进入主题! 首先,下载Highcharts包文件,下载地址如下: 中文网下载中心:http:// ...

  3. ios开发之数据存取1-SQLite

    iOS开发中常用的数据存取方式有: XML属性列表-PList NSKeyedArchiver 归档 Preference-偏好设置 SQLite3 Core Data-以面向对象的方式操作数据库SQ ...

  4. Chp5: Bit Manipulation

    Bits Facts and Tricks x ^ 0s =  x x & 0s =  0 x | 0s = x x ^ 1s = ~x x & 1s = x x | 1s = 1s ...

  5. Sublime Text 3配置与vim模式(待完整)

    Sublime Text 3通过设置默认值与用户值的方式,来进行配置.默认值不允许更改,用户值是用户进行配置.同一属性,当用户值存在时,默认值就无效.打开Preference,如图: 先贴下我的Set ...

  6. crontab定时运行git命令 更新代码库

    Q:  http://stackoverflow.com/questions/7994663/git-push-via-cron    I'm trying to run a git push fro ...

  7. WPF / Win Form:多线程去修改或访问UI线程数据的方法( winform 跨线程访问UI控件 )

    WPF:谈谈各种多线程去修改或访问UI线程数据的方法http://www.cnblogs.com/mgen/archive/2012/03/10/2389509.html 子线程非法访问UI线程的数据 ...

  8. POJ1573Robot Motion

    http://poj.org/problem?id=1573 #include<stdio.h> #include<stdlib.h> #include<cstring& ...

  9. 天灵灵,地灵灵,但愿这个一定灵!!!python调用win32api,启动应用程序窗口

    这个是逼到没办法,C#那一套,一点基本没有. 还好,网上找到例程,可以指定帐户启动进程,但愿可以摆脱WIN SERVICE启动产生的SESSION 0 隔离问题. 因为这个问题,以SERVICE启动的 ...

  10. lintcode 中等题:搜索旋转排序数组II

    题目 搜索旋转排序数组 II 跟进“搜索旋转排序数组”,假如有重复元素又将如何? 是否会影响运行时间复杂度? 如何影响? 为何会影响? 写出一个函数判断给定的目标值是否出现在数组中. 样例 给出[3, ...