Oracle 10g 两个监听进程的故障

今天又有一台Oracle 10.2.0.1数据库出现故障,开发人员报告说:无法通过监听正常连接。

登录服务器检查,发现cpu idle为0,并且大量oracle进程占用很高cpu:

top - 15:38:03 up 198 days, 21:57,  3 users,  load average: 35.73, 34.97, 31.51
Tasks: 123 total,  36 running,  87 sleeping,   0 stopped,   0 zombie
Cpu(s): 35.6% us, 64.4% sy,  0.0% ni,  0.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   2074952k total,  1350376k used,   724576k free,    80720k buffers
Swap:  4192956k total,   350328k used,  3842628k free,   960848k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                        
 3385 oracle    25   0  894m  49m  48m R 75.1  2.4  11:38.10 oracle                                                         
 3389 oracle    25   0  895m 118m 116m R 61.5  5.9  25:40.05 oracle                                                         
11296 oracle    25   0  893m  20m  18m R 61.5  1.0  13:39.38 oracle                                                         
 3377 oracle    25   0  941m 449m 447m R 54.6 22.2  20:14.19 oracle                                                         
 3373 oracle    25   0  892m 9568 9404 R 34.2  0.5  13:15.53 oracle                                                         
 3406 oracle    25   0  908m  20m  10m R 27.3  1.0  17:05.34 oracle                                                         
 9207 oracle    25   0  894m 172m 169m R 27.3  8.5  18:25.18 oracle                                                         
 3381 oracle    25   0  894m  33m  32m R 20.5  1.7  31:30.03 oracle                                                         
13803 oracle    25   0  893m  16m  15m R 13.7  0.8   1:22.09 oracle                                                         
    1 root      16   0  2016  500  472 S  0.0  0.0   0:17.30 init                                                           
    2 root      RT   0     0    0    0 S  0.0  0.0   0:01.57 migration/0                                                    
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.02 ksoftirqd/0       

并且此时sys用户无法登录sqlplus:

[oracle@itflow2 ~]$ sqlplus "/ as sysdba"

[oracle@itflow2 ~]$

并且检查系统发现,系统上有两个listener进程,其中一个是另外一个的子进程:

[oracle@itflow2 ~]$ ps -ef | grep tnslsnr
oracle   24644     1 12 02:50 ?        00:01:23 /opt/oracle/product/10.2.1/bin/tnslsnr LISTENER -inherit
oracle   29732     24644 1 30 15:50 ?        00:03:23 /opt/oracle/product/10.2.1/bin/tnslsnr LISTENER -inherit
oracle   25804 25762  0 16:18 pts/0    00:00:00 grep tnslsnr

之前已经碰到过这个Bug,Metalink有关于这个Bug的解释和解决方案,Bug号为:4518443

Oracle的解释为: Oracle 10g在系统较大压力下,listener进程会spawn一个子进程,导致listener进程hang住:

Bug 4518443  Listener hang under load

 This note gives a brief overview of bug 4518443.

Affects:

Product (Component)Oracle Application Server 10g (Oracle Nofication Service)
Range of versions believed to be affectedVersions < 11
Versions confirmed as being affected
  • 10.1.0.5
  • 10.2.0.1
  • 10.2.0.2
Platforms affectedGeneric (all / most platforms affected)

Fixed:

This issue is fixed in
  • 10.2.0.3 (Server Patch Set)

Symptoms:

Related To:

  • Hang (Process Hang)
  • Network

Description

The listener process can hang under load while spawning a process.  
The last process the listener spawned will have a stack which 
includes a mutex lock call in ons_atfork_prepare().

 

其实以前有一台Oracle 10g的服务器也碰到过这个Bug,当时根据Metalink的解决方案,在listener.ora文件里添加下面一行:


SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF

但是,后来感觉这个参数设置并没有生效,那台Oracle服务器仍然有这个Bug。

看来只有将Oracle升级为10.2.0.3了。  也许这是一个彻底的解决方法。

 

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

转载于:http://blog.itpub.net/7220098/viewspace-166466/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值