ITPub博客

首页 > Linux操作系统 > Linux操作系统 > (转帖)关于Oracle10g启动两个监听进程的故障

(转帖)关于Oracle10g启动两个监听进程的故障

原创 Linux操作系统 作者:flickersun 时间:2012-01-19 15:26:29 0 删除 编辑
转自
http://hi.baidu.com/horneylee/blog/item/99b24924fa159823d40742dd.html
 
因为自己在测试机上就三番五次碰到了这个问题。正好看到这里有解决的途径,所以特此记录。
 

关于Oracle10g启动两个监听进程的故障报告
故障发生时数据库无法通过监听正常建立连接,检查时会发现系统上存在两个监听器进程,其中一个是另外一个的子进程。

示例:


local1:/ #ps -ef | grep tnslsnr
oracle 925826 1 0 Apr 06 - 234:50 /u01/app
/oracle/product/102/bin/tnslsnr listener1 -inherit
oracle 1081540 925826 0 21:39:39 - 0:00
/u01/app/oracle/product/102/bin/tnslsnr listener1 -inherit

很多人在RAC环境下也遇到了类似的问题。

这个问题被最终确认为一个BUG,BUG号为:4518443

Oracle称在较大压力下,监听进程可能出现间歇性停止服务,此时Oracle会spaw出另外一个监听进程,进而导致两个监听进程互相影响的故障。

在非RAC环境下,可以通过在listener.ora中设置参数来暂时回避这个BUG。

SUBSCRIBE_FOR_NODE_DOWN_EVENT_=OFF


同时Oracle已经推出了相关Patch用来修正这个问题。

===================================================================================================================
Oracle 10201 版本的一个BUG : 4518443(转)2007年07月27日 星期五 19:48据ORACLE解释,在任何操作系统版本都有此问题。
现象:监听器启动后,隔一段时间(长短不定),就会出现无法连接:若是用10201版本的SQLPLUS,则会出现 NO LISTENER。
9207 版本的SQLPLUS,则会出现:没反应,HANG住。
原因:10201 版本上的一个BUG:4518443。其会自动创建一个子监听器,当出现此情况时,监听器将会挂起。
/opt/oracle/product/10g/network/log/listener.log有如下语句:
WARNING: Subscription for node down event still pending
检查是否真因为此BUG造成此现象:


[oracle@myocp ~]$ ps -ef|grep lsnr
oracle   22779 23373  0 11:22 ?        00:00:00 /oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit
oracle   23373     1  1 10:09 ?        00:05:14 /oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit
oracle   23684 23660  0 15:13 pts/1    00:00:00 lsnrctl status
oracle   23686 23660  0 15:14 pts/1    00:00:00 grep lsnr

正常情况只有一个监听器,而此BUG则会出现两个监听器。
解决方法:打补丁4518443 或者在listener.ora 文件里加入:(NO-RAC)
SUBSCRIBE_FOR_NODE_DOWN_EVENT_=OFF
其中, 是数据库的监听器的名称。如:默认情况下,监听器名为:LISTENER 。则语句就是:
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
重启监听程序:
lsnrctl stop
lncrctl start


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

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


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26640620/viewspace-715109/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-01-19

  • 博文量
    3
  • 访问量
    2489