ORA-600(13030)错误

在ITPUB上看到的一个UPDATE RETURN引发的ORA-600错误。
告警日志中错误如下:

Mon Jan 16 09:50:13 2012
Errors IN file /DATA/dir1/app/oracle/admin/moyzkf1/udump/moyzkf1_ora_27801.trc:
ORA-00600: internal error code, arguments: [13030], [1], [], [], [], [], [], []

从对应的TRACE中可以看出,执行的是一个UPDATE RETURN语句:

*** 2012-01-16 09:50:13.236
*** SERVICE NAME:(moyzkf1) 2012-01-16 09:50:13.179
*** SESSION ID:(1981.62963) 2012-01-16 09:50:13.179
updrow: CR error TABLE 0 - rowid: 0001b9c9.0360371b.2 code 1
*** 2012-01-16 09:50:13.236
ksedmp: internal OR fatal error
ORA-00600: internal error code, arguments: [13030], [1], [], [], [], [], [], []
CURRENT SQL statement FOR this SESSION:
UPDATE T_Y_CN20111002_PRIZE SET REMAIN = REMAIN - 1 WHERE ID = (SELECT ID FROM (SELECT ID FROM T_Y_CN20111002_PRIZE WHERE GRADE = :B3 AND REMAIN > 0 AND :B2 BETWEEN BEGINDATE AND ENDDATE AND INSTR(NVL(COVEREDPROVINCES, ',' || :B1 || ','), ',' || :B1 || ',') > 0 ORDER BY DBMS_RANDOM.VALUE(1, 100000)) WHERE ROWNUM < 2) AND REMAIN > 0 AND CAST(DBMS_RANDOM.VALUE(1, PROBABILITY) AS INTEGER) = CAST(DBMS_RANDOM.VALUE(1, PROBABILITY) AS INTEGER) RETURN ID, TITLE, PRESENTFIGURES INTO :O0 ,:O1 ,:O2 
----- PL/SQL Call Stack -----
  object      line  object
  handle    NUMBER  name
0x24fdcddf8      1007  package body P_YZKF.PKG_Y_CN20111002
0x29bb96108         1  anonymous block
----- Call Stack Trace -----
calling              CALL     entry                argument VALUES IN hex      
location             TYPE     point                (? means dubious VALUE)     
-------------------- -------- -------------------- ----------------------------
ksedst()+31          CALL     ksedst1()            000000000 ? 000000001 ?
                                                   7FFFCCDF1840 ? 7FFFCCDF18A0 ?
                                                   7FFFCCDF17E0 ? 000000000 ?
ksedmp()+610         CALL     ksedst()             000000000 ? 000000001 ?
                                                   7FFFCCDF1840 ? 7FFFCCDF18A0 ?
                                                   7FFFCCDF17E0 ? 000000000 ?
ksfdmp()+21          CALL     ksedmp()             000000003 ? 000000001 ?
                                                   7FFFCCDF1840 ? 7FFFCCDF18A0 ?
                                                   7FFFCCDF17E0 ? 000000000 ?
kgeriv()+176         CALL     ksfdmp()             000000003 ? 000000001 ?
                                                   7FFFCCDF1840 ? 7FFFCCDF18A0 ?
                                                   7FFFCCDF17E0 ? 000000000 ?
kgesiv()+119         CALL     kgeriv()             006728580 ? 01D3DFEA0 ?
                                                   000000000 ? 000000000 ?
                                                   7FFFCCDF17E0 ? 000000000 ?
ksesic1()+215        CALL     kgesiv()             006728580 ? 01D3DFEA0 ?
                                                   0000032E6 ? 000000001 ?
                                                   7FFFCCDF25C0 ? 000000000 ?
updrow()+4930        CALL     ksesic1()            0000032E6 ? 000000000 ?
                                                   000000001 ? 000000000 ?
                                                   000000000 ? 000000001 ?
qerupRowProcedure()  CALL     updrow()             25EC23040 ? 000007FFF ?
+80                                                2B16DFD2A018 ? 000000000 ?
                                                   000000000 ? 000000001 ?
qerupFetch()+667     CALL     qerupRowProcedure()  25EC23040 ? 000007FFF ?
                                                   2B16DFD2A018 ? 000000000 ?
                                                   000000000 ? 000000001 ?
updaul()+1065        CALL     qerupFetch()         000000001 ? 000000000 ?
                                                   25EC1AC58 ? 000007FFF ?
                                                   000000000 ? 25EC1AF18 ?
updThreePhaseExe()+  CALL     updaul()             25EC23040 ? 7FFFCCDF3850 ?
3016                                               000000000 ? 2B16DFA5AC78 ?
                                                   000000000 ? 25EC1AF18 ?

查询MOS确认感觉和ORA-600 [13030] On Update Statement [ID 744937.1]描述的Bug 7411865 – OERI:13030 / ORA-1407 / block corruption from UPDATE .. RETURNING DML with trigger非常接近,只有一点感觉有所出入,就是当前的版本是10203,而Bug 7411865是10204补丁集解决bug 5115882时,引入的新的错误。因此,如果当前的10203没有专门取应用patch 5115882,那么应不会碰到这个错误。
因此根据这个推断,Bug 4549673 ORA-30926 / OERI:13030 during update描述的就更为接近一些。
判断到底是哪个问题其实并不复杂,只需要将数据库升级到10.2.0.4既可。在10204中Bug 4549673被fixed,而7411865则仍然存在。
如果将版本升级到10.2.0.4.2或10.2.0.5则这两个bug都会被fixed。

This entry was posted in BUG and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *