Oracle10.2.0.4 Linux64版本监听存在多个子进程

Update:还是被这个监听搞了一回,即使加了SUBSCRIBE_FOR_NODE_DOWN_EVENT_ =OFF。连续两天出现swap和load过高导致数据库无法提供服务,甚至OS都无法登陆。在ps后发现有两个监听进程,kill后系统恢复正常。按照Oracle的建议,删除了ONS的配置文件$ORACLE_HOME/opmn/conf/ons.config,暂时看起来正常了

连续两台全新安装的Linux64+Oracle10.2.0.4的环境,启动listener后,都出现了4个进程:

more /etc/issue
Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
Kernel \r on an \m


ps -ef | grep tns
oracle 3244 1 0 09:37 ? 00:00:00 /u01/oracle/product/10.2/bin/tnslsnr listener_stb -inherit
oracle 3245 3244 0 09:37 ? 00:00:00 /u01/oracle/product/10.2/bin/tnslsnr listener_stb -inherit
oracle 3246 3245 0 09:37 ? 00:00:00 /u01/oracle/product/10.2/bin/tnslsnr listener_stb -inherit
oracle 3247 3245 0 09:37 ? 00:00:00 /u01/oracle/product/10.2/bin/tnslsnr listener_stb -inherit
oracle 5841 5504 0 10:12 pts/2 00:00:00 grep tns

之前一台Linux32位平台从9i升级上来的没有这个问题,一套Linux64平台从10.2.0.3升级上来的RAC也没有这个问题。在10.2.0.3之前,曾经有一个bug 4518443,listener可能产生一个或者多个子进程,最终导致监听hang住无法提供服务。这回到好,一启动直接就开4个进程。Oracle在10.2.0.3版中加入了4518443的patch,应该是屏蔽了某段代码,而看来到10.2.0.4他们认为这段问题代码找到了解决方法,又加了进来,结果在Linux64平台上问题更严重了,faint。

通过Bug 4518443提供的workaround可以暂时屏蔽该问题, 在listener.ora中加入:

SUBSCRIBE_FOR_NODE_DOWN_EVENT_ =OFF

按照metalink的说法,这个语句关闭了监听自动向ONS(Oracle Notification Services)注册,正是这个注册可能导致监听启动子进程。ONS是RAC中的一个组件,禁用该特性将导致RAC的FAN(Fast Application Notification)特性不可用。还好我这里两台都是单机,这么解决应该没什么问题。

Bug啊,总是来了又走,走了又来,就像移动联通电信,分了又合,合了又分,呵呵。



无觅相关文章插件,快速提升流量

2条评论

  • At 2008.05.31 00:42, 木匠 said:

    RAC 怎么办?

    我们直接跳到11g, 可以不用担心这个问题.

    • At 2008.05.31 07:41, NinGoo said:

      目前还不太清楚这个问题触发的具体原因,有人说同样的平台没有问题的。我们这里一套RAC升上来也是正常的。

      你们直接用11g?用得好的话大家分享下^_^


    (Required)
    (Required, will not be published)