WARNING: Subscription for node down event still pending
昨天发现这个11G的单节点生产库(oracle 11.1.0.6 )在做一次表导入后忽然连接不上.redhat 4平台. 通过操作系统oracle用户进入,
sqlplus / as sysdba 查看数据库是打开的. 于是判断监听有问题. 运行lsnrctl status 没有反应. 在$ORACLE_HOME/network/log中竟然发现没有监听日志记录. 今天才想起oracle 11g的监听不在该位置.而是在$ORACLE_BASE/diag/tnslsnr/<instance_name>/listener/trace目录下.查看监听日志,有大量的警告 "WARNING: Subscription for node down event still pending" ,该警告信息原因为oracle监听繁忙导致产生子监听,可能发生冲突,导致监听失败.禁用子监听即可.
由于该监听器为默认,所以添加SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF到listner.ora中,然后重载监听,lsnrctl reload. 观察监听日志发现没有再产生该警告.
Oracle 显示该问题为bug,并在10.2.0.3中已修复,但看来在11.1.0.6中仍然存在,不知在11.2版本中是否修复.
Issue is fixed in 10.2.0.3 Patch Set
Oracle Support recommends patching to 10.2.0.4 as this the lastest release
- OR -
Apply Patch 4518443 for the problem (if a patch is available)
- OR -
As a workaround, two steps should be done:
1. The following parameter can be added to listener.ora
SUBSCRIBE_FOR_NODE_DOWN_EVENT_<listener_name>=OFF
Where <listener_name> should be replaced with the actual listener name configured in the LISTENER.ORA file. This parameter is to be placed by itself on an empty line / at the end of file.
For example, if the listener name is LISTENER (default), the parameter would be:
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
2. Locate the ons.config file in the 10g(rdbms) home and rename it to something else.
For example:
cd $ORACLE_HOME/opmn/conf
mv ons.config ons.config.orig
The listener needs to be restarted after these changes.