某省电信行业公司数据库ORA-00600 [15160]处理

系统:HP-UX B.11.31

是否RAC:YES

数据库详细版本:10.2.0.4

1. 问题背景

2014-02-26上午10:13:39dbrac库节点2,在alert日志中发现很多ORA-600错误,经分析是表test_wait的统计信息出错导致,重新分析该表的统计信息,错误消除。
 
2. DBRAC库错误处理过程

1、查看alert日志如下:

Wed Feb 26 10:11:18 2014

Errors in file /Oracle/admin/dbrac/udump/dbrac2_ora_14794.trc:

ORA-00600: internal error code, arguments: [15160], [], [], [], [], [], [], []

Wed Feb 26 10:12:29 2014

Errors in file /oracle/admin/dbrac/udump/dbrac2_ora_14794.trc:

ORA-00600: internal error code, arguments: [15160], [], [], [], [], [], [], []

Wed Feb 26 10:13:39 2014

Errors in file /oracle/admin/dbrac/udump/dbrac2_ora_29891.trc:

ORA-00600: internal error code, arguments: [15160], [], [], [], [], [], [], []

2、继续分析trace日志如下:

/oracle/admin/dbrac/udump/dbrac2_ora_29891.trc

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, Data Mining and Real Application Testing options

ORACLE_HOME = /oracle/product/10.2.0/db

System name:    HP-UX

Node name:      dbrac2

Release:        B.11.31

Version:        U

Machine:        ia64

Instance name: dbrac2

Redo thread mounted by this instance: 2

Oracle process number: 121

Unix process pid: 29891, image: oracle@dbrac2

 

*** ACTION NAME:() 2014-02-26 10:13:39.698

*** MODULE NAME:(BusiMonitor@ccjkp1 (TNS V1-V3)) 2014-02-26 10:13:39.698

*** SERVICE NAME:(dbrac) 2014-02-26 10:13:39.698

*** SESSION ID:(1491.11581) 2014-02-26 10:13:39.698

*** 2014-02-26 10:13:39.698

ksedmp: internal or fatal error

ORA-00600: internal error code, arguments: [15160], [], [], [], [], [], [], []

Current SQL statement for this session:

select 'M-6M-LM-PM-EM-IM-OM-PM-PM-JM-}M->M-]test_waitM-SM-P'||count(1)||'M-LM-uM-<M-GM-BM-<M-QM-OM-VM-XM-3M-,M-JM-1M-#M-,M-NM-4M-<M-0M-JM-1M-GM-eM-@M-mM-#M-!' fr

om test_wait where recvtime < sysdate -10/1440 and stepnow=0 having
 count(1) >=1
----- Call Stack Trace -----

calling              call    entry                argument values in hex     

location            type    point                (? means dubious value)   

-------------------- -------- -------------------- ----------------------------

ksedst()+64          call    ksedst1()            000000000 ? 000000001 ?

ksedmp()+2176        call    ksedst()            000000000 ?

                                                  C000000000000C9F ?

                                                  4000000003ECA500 ?

                                                  000000000 ? 000000000 ?

                                                  000000000 ?

ksfdmp()+48          call    ksedmp()            000000003 ?

kgeriv()+336        call    ksfdmp()            C000000000000695 ?

                                                  000000003 ?

                                                  4000000009382BA0 ?

                                                  000020127 ? 000000000 ?

                                                  000000000 ? 000000000 ?

                                                  000000000 ?

kgesiv()+192        call    kgeriv()            6000000000031370 ?

                                                  6000000000032428 ?

                                                  40000000018D14C0 ?

                                                  000000000 ?

                                                  9FFFFFFFFFFEE7E8 ? 

3、进一步分析是有以下SQL触发ORA-600

select 'M-6M-LM-PM-EM-IM-OM-PM-PM-JM-}M->M-]test_waitM-SM-P'||count(1)||'M-LM-uM-<M-GM-BM-<M-QM-OM-VM-XM-3M-,M-JM-1M-#M-,M-NM-4M-<M-0M-JM-1M-GM-eM-@M-mM-#M-!' fr

om test_wait where recvtime < sysdate -10/1440 and stepnow=0 having count(1) >=1

--------------------------------------分割线 --------------------------------------

--------------------------------------分割线 --------------------------------------