日期:2014-05-16  浏览次数:20403 次

记一次Oracle监听无法动态注册处理
在之前的文章中http://itspace.iteye.com/blog/1055532探讨过监听无法动态注册的问题,这一次又在不同的客户中碰到了相同的问题,遂记录之。
客户反映他的数据库无法动态注册监听,监听状态显示如下
引用
$ lsnrctl status

LSNRCTL for HPUX: Version 10.2.0.3.0 - Production on 10-JUN-2011 16:38:16

Copyright (c) 1991, 2006, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=130.123.12.89)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for HPUX: Version 10.2.0.3.0 - Production
Start Date                10-JUN-2011 16:35:38
Uptime                    0 days 0 hr. 2 min. 38 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/app/product/10.2/network/admin/listener.ora
Listener Log File         /oracle/app/product/10.2/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=130.123.12.89)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "wesrmirr" has 1 instance(s).
  Instance "wesrmirr", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

可以看到监听端口为1521,而且local_listner参数为空,
引用
SQL> show parameter local

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
local_listener                       string
log_archive_local_first              boolean     TRUE

在这种情况下,理论上pmon会将实例状态动态注册至监听中。
手动发起监听注册,也没有作用,监听状态依旧。
引用
SQL> alter system register;

System altered.


于是检查数据库检查日志,在启动日志出现无效地址字样
引用
PMON started with pid=3, OS id=2521
Fri Jun 10 16:33:25 2011
ORA-00130: invalid listener address '(ADDRESS=(PROTOCOL=TCP)(HOST=unknown)(PORT=1521))'
PSP0 started with pid=2, OS id=2526

进一步检查listener.ora文件和/etc/hosts文件
引用
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/app/product/10.2)
      (PROGRAM = extproc)
&nb