首页 » ORACLE, ORACLE [C]系列 » Troubleshooting 19c ora-600 internal error code [kkshhcdel:wrong-bucket]

Troubleshooting 19c ora-600 internal error code [kkshhcdel:wrong-bucket]

Oracle 19c(19.9) RAC on linux, 应用执行一个update sql时报错ora-600, 错误日志如下

ORA-00600: internal error code, arguments: [kkshhcdel:wrong-bucket], [0x58445A790], [0x000000000], [0x67DFB5820], [], [], [], [], [], [], [], []

----- Current SQL Statement for this session (sql_id=1jkhptdvurr4q) -----
update XXX_LOG set sendstatus=:1 ,ERROR_INFO=:2 ,process_time=sysdate where rowid = chartorowid(:3 )
[TOC00003-END]

[TOC00004]
----- Call Stack Trace -----
calling              call     entry                argument values in hex      
location             type     point                (? means dubious value)     
-------------------- -------- -------------------- ----------------------------
...
dbgePostErrorKGE()+  call     dbgexProcessError()  7FFFF7F436D0 7FFFF7F488A0
1853                                               000000001 000000000
                                                   000000000 ? 000000082 ?
dbkePostKGE_kgsf()+  call     dbgePostErrorKGE()   7FFFF7F839A0 7FFFF7E0AA88
71                                                 000000258 000000000 ?
                                                   000000000 ? 000000082 ?
kgeadse()+447        call     dbkePostKGE_kgsf()   7FFFF7F839A0 7FFFF7E0AA88
                                                   000000258 000000000 ?
                                                   000000000 ? 000000082 ?
kgerinv_internal()+  call     kgeadse()            7FFFF7F839A0 ? 7FFFF7E0AA88
44                                                 000000258 ? 013D772D0
                                                   000000000 000000003
kgerinv()+40         call     kgerinv_internal()   7FFFF7F839A0 ? 7FFFF7E0AA88 ?
                                                   000000258 ? 013D772D0 ?
                                                   000000000 ? 000000003 ?
kgeasnmierr()+146    call     kgerinv()            7FFFF7F839A0 ? 7FFFF7E0AA88 ?
                                                   000000258 ? 013D772D0 ?
                                                   000000000 ? 000000003 ?
kkshhcdel()+1375     call     kgeasnmierr()        7FFFF7F839A0 ? 7FFFF7E0AA88 ?
                                                   000000258 ? 013D772D0 ?
                                                   000000002 58445A790
kksfbc()+17471       call     kkshhcdel()          7FFFF7F839A0 ? 7FFFF7E0AA88 ?
                                                   58445A7E0 ? 67DFB5800 ?
                                                   000000002 ? 58445A790 ?
opiexe()+2895        call     kksfbc()             7FFFF268C4A8 7FFFF7E0AA88 ?
                                                   58445A7E0 ? 67DFB5800 ?
                                                   000000002 ? 58445A790 ?
kpoal8()+2387        call     opiexe()             000000049 7FFFF7E0AA88 ?
                                                   7FFFFFFF7FE0 67DFB5800 ?
                                                   000000002 ? 58445A790 ?
opiodr()+1202        call     kpoal8()             00000005E 000000026
                                                   7FFFFFFFBA40 67DFB5800 ?
                                                   000000002 ? 58445A790 ?

kkshhcdel – kernel compile shared objects (cursor) cursor hash table hash chain child delete

kksfbc – kernel compile shared objects (cursor) find bound cursor

An Ora-600 [kkshindel:wrong-bucket] might have been seen if we have concurrent access to the same cursor across multiple sessions. This has
now be addressed.

应该是在SQL解析阶段,多个session一致性访问相同的sql cursor时, 获取了hash chain后,遍历hash table时,查找hash bucket时出错。还是发生在shared pool内存中, 判断问题是SQL级,影响该SQL, 建议尝试flush shared pool。

目前oracle中未发现完全匹配bug,但和Bug 31213034 相似.  本案例在flush shared pool恢复正常。

BTW, 19c RU选择时,建议19.11以上,相对问题少一些。

打赏

,

对不起,这篇文章暂时关闭评论。