千家信息网

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

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,记录下刚刚做的一个为一个数据库(t02)配置多个监听(listener)的实验,过程有点小曲折。(1)新增两个测试的监听,listener.ora的配置内容(可纯手动编辑该文件或使用netca)如下:
千家信息网最后更新 2026年11月03日ORACLE之手动注册监听listener。alter system set local_listener="XXX"

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

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

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

[sql] view plain copy
  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个监听:

[sql] view plain copy
  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始终不能注册服务:

[sql] view plain copy
  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):

[sql] view plain copy
  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):

[sql] view plain copy
  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已能正常注册服务:

[sql] view plain copy
  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用户能够正常登录:

[sql] view plain copy
  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";来手动注册监听。


监听 服务 程序 个例 状态 处理 文件 成功 别名 命令 正在 测试 安全 参数 安全性 小时 日志 日期 时间 概要 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 耶加雪菲 中关村互联网 科技集团 互联网科技会 互联网金融科技创新 互联网金融科技委员会 青海省互联网新科技 中盈科技互联网信息有限公司 互联网科技教育视频 宜昌元轩互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 哈尔滨屹滨互联网科技有限公司 深圳市优智互联网科技有限公司 如何创新互联网科技 广州新华互联网科技学校电竞方面 中科明德北京互联网科技 广州互联网高科技取餐柜 广州有谷有贝互联网科技有限公司 陕西九四连强互联网科技有限公司 好易买互联网科技 互联网科技大会大佬 科技互联网政务服务 万易互联网科技有限公司 科技互联网创业计划书 互联网时代科技改变生活 互联网对科技的发展 注册互联网科技公司经营范围大全 21世纪互联网科技成就 西安有哪些互联网高科技企业 互联网科技收购价值 科技美学互联网 艺术
0