在数据库的错误日志中发现了这个错误。
数据库版本为11.1.0.6 RAC,alert文件中错误信息如下:
Errors in file /db/oracle/app/oracle/diag/rdbms/ora00/ora001/trace/ora001_ora_5879.trc (incident=409507):
ORA-00600: 内部错误代码, 参数: [kkocxj : pjpCtx], [], [], [], [], [], [], []
Incident details in: /db/oracle/app/oracle/diag/rdbms/ora00/ora001/incident/incdir_409507/ora001_ora_5879_i409507.trc
而对应trace的详细信息为:
Dump continued from file: /db/oracle/app/oracle/diag/rdbms/ora00/ora001/trace/ora001_ora_5879.trc
ORA-00600: 内部错误代码, 参数: [kkocxj : pjpCtx], [], [], [], [], [], [], []
========= Dump for incident 409507 (ORA 600 [kkocxj : pjpCtx]) ========
*** 2010-12-01 18:01:15.145
----- Current SQL Statement for this session (sql_id=6kqj2b3sbx8u9) -----
select * from (select c.policyno,e.empname,e.SECDEPTNAME,f.chnname ,sum(nvl(b.applynum,0)) thisapplynum,sum(nvl(b.applysum,0)) thisapplysum ,sum(a.auditnum) thisauditnum,sum(a.auditsum) thisauditsum ,sum(a.auditsum)*100/sum(b.applysum) auditrate from ( select t2.policyno,count(buyerquotano) auditnum,sum(quotasum) auditsum from t_1 t1,t_2 t2 where t1.childpolicyno=t2.childpolicyno and to_char(t1.auditdate,'yyyy-mm')='2010-01' and ifnewadd='1' group by t2.policyno ) a, ( select t1.policyno,count(t1.quotaapplyno) applynum,sum(quotasumapply) applysum from t_3 t1,t_4 t2,t_5 t3 where t1.quotaapplyno=t2.quotaapplyno and t2.childpolicyno=t3.childpolicyno and to_char(t2.auditdate,'yyyy-mm')='2010-01' and t2.ifnewadd='1' and t1.commitflag in ('1','2','3') group by t1.policyno ) b, t_6 c,t_7 d,v_e e,t_8 f where a.policyno=c.policyno(+) and a.policyno=b.policyno(+) and a.policyno=e.PRODUCTID(+) and c.insurantno=f.exportno and c.nodeid=d.nodeid and d.corpid='4403' group by c.policyno,e.empname,e.SECDEPTNAME,f.chnname) order by thisapplysum desc
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedst1()+96 CALL skdstdst() FFFFFFFF7FFEB650 ?
000335800 ?
FFFFFFFF7FFC31D8 ?
000000000 ?
FFFFFFFF7FFC31D8 ?
1095E7FB0 ?
ksedst()+56 CALL ksedst1() 000000000 ? 000000001 ?
00010992B ? 000109800 ?
109923000 ? 000109923 ?
dbkedDefDump()+1388 CALL ksedst() 000000000 ? 000000000 ?
000000000 ? 000000000 ?
10992B000 ? 00010992B ?
dbgexPhaseII()+760 PTR_CALL 0000000000000000 10992B000 ? 000109800 ?
10992B000 ? 000109800 ?
00010992B ? 10993D000 ?
dbgexProcessError() CALL dbgexPhaseII() 109A2E780 ? 109A37480 ?
+996 FFFFFFFF7FFECB38 ?
001050005 ? 001376000 ?
000000000 ?
dbgePostErrorKGE()+ CALL dbgeExecuteForError 001050000 ? 000000002 ?
1124 () 001060000 ? 041415800 ?
109A37480 ? 0002F7C00 ?
kgerinv_internal()+ CALL kgeadse() 000000000 ? 000000000 ?
68 1085A7620 ? 000000001 ?
000000258 ?
FFFFFFFF7FFF01E8 ?
kgerinv()+40 CALL kgerinv_internal() 1099242E8 ?
FFFFFFFF7D022040 ?
109132F30 ? 000000258 ?
000000000 ? 1085AF330 ?
kgeasnmierr()+28 CALL kgerinv() 1099242E8 ?
FFFFFFFF7D022040 ?
109132F30 ? 000000000 ?
FFFFFFFF7FFF0560 ?
000001400 ?
kkocxj()+1192 CALL kgeasnmierr() 1099242E8 ?
FFFFFFFF7D022040 ?
109132F30 ? 000000000 ?
109923000 ? 10992B000 ?
kkoiqb()+10492 CALL kkocxj() FFFFFFFF7C7FE7B0 ?
FFFFFFFF7C7FEFC8 ?
000109800 ? 000000002 ?
FFFFFFFF7CA70D80 ?
008000000 ?
这个SQL相对比较复杂,内存是两个包含GROUP BY的子查询,外层还包含了外连接以及GROUP BY。
查询了metalink,感觉问题描述和文档ID 9671977.8描述的十分接近,这个问题在11.1上会出现。通过设置隐含参数_OPTIMIZER_PUSH_PRED_COST_BASED为FALSE可以避免这个错误的产生。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-680907/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4227/viewspace-680907/