ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle 10g 两个监听进程的故障

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

原创 Linux操作系统 作者:Dodd 时间:2008-01-30 16:59:43 0 删除 编辑

今天又有一台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 affected Versions < 11
Versions confirmed as being affected
  • 10.1.0.5
  • 10.2.0.1
  • 10.2.0.2
Platforms affected Generic (all / most platforms affected)

Fixed:

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

Symptoms:

Related To:

  • 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/,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2008-01-22

  • 博文量
    46
  • 访问量
    159452