ORA-600(qertbFetchByRowID)错误

以前也碰到过这个错误,不过由于无法直接连接数据库,没有办法深入分析。这次虽然同样没有办法连接数据库,但是获取了更详细的信息,基本确定导致问题的原因。

 

 

错误信息如下:

Wed May 09 10:41:32 2012
Errors in file /oracle/admin/orcl/udump/orcl_ora_423466.trc:
ORA-00600: internal error code, arguments: [qertbFetchByRowID], [], [], [], [], [], [], []

其实从错误信息不难分析,导致问题的原因和索引有关,错误信息明确指出了问题发生在通过ROWID信息读取表时,而通过ROWID读取是索引扫描的标志。

一般来说这种问题是索引和表上数据的逻辑损坏造成的,如果问题出现在索引上,那么最简单的办法莫过于删除重建索引,或者使用ONLINE方式重建索引。

将索引删除后,问题果然不再出现,但是尝试重建索引时,引发了另一个ORA-600错误:

SQL> analyze table tab_a validate structure cascade online;
analyze table tab_a validate structure cascade online
ORA-01499: table/index cross reference failure - see trace file

SQL> alter index ind_a rebuild online parallel 4;
alter index ind_a rebuild online parallel 4
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], []

告警日志中信息为:

Errors in file /oracle/admin/orcl/udump/orcl_ora_618990.trc:
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], []

详细TRACE中信息为:

*** 2012-05-09 13:52:41.518
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], []
Current SQL statement for this session:
alter index ind_a rebuild online parallel 4
----- Call Stack Trace -----
calling              call     entry                argument values in hex     
location             type     point                (? means dubious value)    
-------------------- -------- -------------------- ----------------------------
ksedst+001c          bl       ksedst1              00000FFFF ? 000000000 ?
ksedmp+0290          bl       ksedst               104A557A8 ?
ksfdmp+0018          bl       03F4CD24             
kgerinv+00dc         bl       _ptrgl              
kgeasnmierr+004c     bl       kgerinv              70000002F81807C ? 0000000B8 ?
                                                   1F400000000 ? 110546478 ?
                                                   110546068 ?
kdsgrp+0460          bl       01FB9490            
kdsgnp+0444          bl       kdsgrp               70000002F8184ED ? 000000000 ?
                                                   110546070 ?
kdstf0011101km+0c24  bl       03F4A5C0            
kdsttgr+5244         bl       kdstf0011101km       110546068 ? 000010266 ?
                                                   70000022DCBB510 ?
                                                   FFFFFFFFFFF54F8 ? 0FFFFFFFF ?
                                                   000001FE8 ? 000000000 ?
                                                   000000000 ?
qertbFetch+09b8      bl       kdsttgr              110546068 ?
                                                   4842208000000001 ?
                                                   804000007BFB0 ? 000000000 ?
                                                   000000000 ? 000000000 ?
                                                   000000000 ? C4FB00000000 ?
qergiFetch+02a4      bl       03F49A98            
qertqoFetch+01f0     bl       01FB9488            
qertqiFetch+0158     bl       01FB9488            
qersoFetch+0110      bl       03F49A98            
qerliFetch+0188      bl       03F49A98            
qertqoFetch+01f0     bl       01FB9488            
qerpxFetch+0210      bl       01FB9488            
kdicrws+16e8         bl       01FB9488            
kdicdrv+09b8         bl       kdicrws              70000022DFE4DC0 ?
                                                   70000022DFE5500 ?
                                                   70000022DFE5500 ?
opiexe+28c4          bl       kdicdrv              B00000009 ? 100000001 ?
                                                   11043C340 ?
opiosq0+19f0         bl       opiexe               FFFFFFFFFFF8E70 ?
                                                   2824424042420820 ?
                                                   FFFFFFFFFFF8F30 ?
kpooprx+0168         bl       opiosq0              33C0D81A0 ? 1101957F8 ?
                                                   1100098E0 ? A4000110199810 ?
kpoal8+0400          bl       kpooprx              FFFFFFFFFFFB784 ?
                                                   FFFFFFFFFFFB508 ?
                                                   3B0000003B ? 100000001 ?
                                                   000000000 ? A40000000000A4 ?
                                                   000000000 ? 1103A0018 ?
opiodr+0ae0          bl       _ptrgl              
ttcpip+1020          bl       _ptrgl              
opitsk+1124          bl       ttcpip               1100CAB28 ? 000000000 ?
                                                   000000001 ? FFFFFFFFFFFB8B0 ?
                                                   000000001 ? 1100DFE78 ?
                                                   FFFFFFFFFFFB830 ? 11046F998 ?
opiino+0990          bl       opitsk               0FFFFD7C0 ? 000000000 ?
opiodr+0ae0          bl       _ptrgl              
opidrv+0484          bl       01FBA8D8            
sou2o+0090           bl       opidrv               3C02ABCD9C ? 4A039F928 ?
                                                   FFFFFFFFFFFF6C0 ?
opimai_real+01bc     bl       01FB868C            
main+0098            bl       opimai_real          000000000 ? 000000000 ?
__start+0090         bl       main                 000000000 ? 000000000 ?

--------------------- Binary Stack Dump ---------------------

可以看到,数据的损坏出在表块上,因此重建索引会导致错误。如果问题出现在表块上,那么除了利用DBMS_REPAIR包之类的进行修复外,还可以通过简单的PL/SQL将正常的数据导出。由于数据存在坏块,直接CREATE TABLE AS SELECT采用直接路径方式,会绕过数据的校验,因此错误数据仍然会插入。而EXPEXPDP在导出的时候同样会报错,因此只有通过PL/SQL单条记录读取,如果正常就插入到目标表,如果出现读取异常,那么通过异常判断来过滤该错误。

ORA-600[kdsgrp1]错误:http://yangtingkun.itpub.net/post/468/524144

 

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

转载于:http://blog.itpub.net/4227/viewspace-723438/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值