ORA-00600 internal error code, arguments [25027], [6]错误
昨天朋友求助,在INSERT的时候,LOB字段遇到了600错误,数据库版本10.2.0.4.0 for AIX,错误信息如下:
Errors in file /ora/oracle/admin/xcky/udump/xcky_ora_827438.trc: ORA-00600: internal error code, arguments: [25027], [6], [0], [], [], [], [], []
Trace信息如下:
ksedmp: internal or fatal error ORA-00600: internal error code, arguments: [25027], [6], [0], [], [], [], [], [] No current SQL statement being executed. ----- Call Stack Trace ----- calling call entry argument values in hex location type point (? means dubious value) -------------------- -------- -------------------- ---------------------------- ksedst+001c bl ksedst1 088484844 ? 041184844 ? ksedmp+0290 bl ksedst 104A2C670 ? ksfdmp+0018 bl 03F263A4 kgeriv+0108 bl _ptrgl kgesiv+0080 bl kgeriv 100A78718 ? 00600CEE1 ? FFFFFFFFFFF4340 ? 11022AC30 ? 000000042 ? ksesic2+0060 bl kgesiv 000000000 ? FFFFFFFFFFF3960 ? 700000010013BD0 ? 700000010018078 ? 110000FD8 ? krtd2abh+040c bl ksesic2 61C3000061C3 ? 000000000 ? 000000006 ? 000000000 ? 000000000 ? 000000320 ? 000024000 ? 000000001 ? kcbgcur+1c7c bl krtd2abh 102581B3C ? 1052DEFC0 ? 000000042 ? 00911B616 ? 00911B616 ? ktspgfblk3+035c bl kcbgcur FFFFFFFFFFF3960 ? 104BD1834 ? D610122010 ? 000000000 ? ktsplbfmb+0724 bl 03F261CC ktsplbrecl+0388 bl ktsplbfmb FFFFFFFFFFFFFFFF ? 00000000A ? 000000000 ? 000000004 ? 000000000 ? 0000000FF ? 000000000 ? 000000002 ? ktspgsp_cbk1+0714 bl 03F24A70 kdlgsp_init+02d0 bl ktspgsp_cbk1 000002000 ? 000000000 ? 000000000 ? 000000000 ? FFFFFFFFFFF43D0 ? 000000001 ? FFFFFFFFFFF5368 ? 104D1E6E0 ? kdl_write1+1274 bl kdlgsp_init FFFFFFFFFFF5368 ? 1105341F8 ? FFFFFFFFFFF9168 ? koklwrite+06a8 bl kdl_write1 FFFFFFFFFFF9168 ? 000000000 ? FFFFFFFFFFF7A88 ? 000000000 ? FFFFFFFFFFF95B8 ? 1101E6690 ? FFFFFFFFFFF7A72 ? 000000000 ? kpolob+0ed0 bl 03F25528 opiodr+0ae0 bl _ptrgl ttcpip+1020 bl _ptrgl opitsk+1124 bl 01F96230 opiino+0990 bl opitsk 000000000 ? 000000000 ? opiodr+0ae0 bl _ptrgl opidrv+0484 bl 01F9507C sou2o+0090 bl opidrv 3C02D992DC ? 44065F000 ? FFFFFFFFFFFF8A0 ? opimai_real+01bc bl 01F929F4 main+0098 bl opimai_real 000000000 ? 000000000 ? __start+0098 bl main 000000000 ? 000000000 ? --------------------- Binary Stack Dump ---------------------
通过MOS发现,该问题系数据库的BUG(bug 13869187),以下是MOS上对该BUG的说明及给出的解决方法。
SYMPTOMS
Insert into table with lob fails with ora-600[25027][x][0] where x is ts# for the tablespace that has the lob.
Tracefile shows the stack function similar to:
krtd2abh kcbgcur ktspgfblk3 ktsplbfmb ktsplbrecl ktspgsp_main kdlgsp_init kdl_write1 kdlf_write koklicbf koklcre
CAUSE
The cause of this error can be LOST IO which may cause other errors like ORA-600 [kdlpdba:kcbz_objdchk] during INSERT.
The problem described in bug 13869187 is because a Block is marked as Formatted in the ASSM metadata L1 bitmap block but the block is unformatted for the LOB segment.
The 3rd argument may not be always 0 (zero) as the problem is that if the block is unformatted, Oracle still tries to locate a pdba assuming that the block is formatted and that pdba offset may be zero when the block is empty (affected block has never formatted:block flag contains 1 – KCBHFNEW and type is zero). If the block is formatted for a former dropped object, then the argument can be different than zero.
DBMS_SPACE_ADMIN.ASSM_SEGMENT_VERIFY with verify_option=>DBMS_SPACE_ADMIN.SEGMENT_VERIFY_SPECIFIC and
attrib=>DBMS_SPACE_ADMIN.BITMAPS_CHECK; however it may be canceled when visiting the first problematic block; thus may not identify all affected blocks.
Syntax example of executing the above procedure:
exec DBMS_SPACE_ADMIN.ASSM_SEGMENT_VERIFY(‘SYS’,’T_C2_LOB’,’LOB’,null,DBMS_SPACE_ADMIN.SEGMENT_VERIFY_SPECIFIC,DBMS_SPACE_ADMIN.BITMAPS_CHECK)
For more details reference Bug 18607613
SOLUTION
The error is fixed by:
recreating the table using exp-drop-import.
OR
Move the lob in a new tablespace.
Alter table move lob(&lob_column) store as (tablespace &tbsp);
@OR
@If the table or the lob are too big taking too long to recreate PATCH 18024115 could be installed, if available, and enabled by
@alter system set “_fix_control”=’18024115:ON’;
@See Doc ID 18024115.8
MOS给了3种解决方法,一种是以逻辑方式导出报错的表的数据,然后重新创建表后,再把数据导入。二是通过MOVE的方式移动LOB段。三是通过打补丁的方式。目前ORACLE早已不再支持10g版本的数据库,建议升级数据库到11.2.0.4。
Warning: A non-numeric value encountered in /www/wwwroot/dbdream/wp-content/themes/weisaysimple/functions.php on line 273
就是一个简单的insert语句
2015-10-16 11:28LOB字段在插入数据时,数据块在ASSM中标示为已经格式化,但是在LOG段中被标识为未格式化,就导致了这个问题,将LOB字段MOVE一下,会使用新的数据块,就解决了这个问题。
2015-10-16 11:28