客户的数据库出现ORA-600错误,错误函数为1265。
数据库版本为10.2.0.4 for Linux,错误信息为:
Fri Aug 26 22:00:11 2011 Errors IN file /opt/app/oracle/admin/orcl/udump/orcl1_ora_16655.trc: ORA-00600: internal error code, arguments: [1265], [0x42180EA78], [], [], [], [], [], [] Fri Aug 26 22:00:13 2011 Errors IN file /opt/app/oracle/admin/orcl/udump/orcl1_ora_16655.trc: ORA-00600: internal error code, arguments: [1265], [0x42180EA78], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [1265], [0x42180EA78], [], [], [], [], [], [] Fri Aug 26 22:00:13 2011 Trace dumping IS performing id=[cdmp_20110826220013] Fri Aug 26 22:00:14 2011 Errors IN file /opt/app/oracle/admin/orcl/udump/orcl1_ora_16655.trc: ORA-00600: internal error code, arguments: [1265], [0x42180EA78], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [1265], [0x42180EA78], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [1265], [0x42180EA78], [], [], [], [], [], [] ORA-06512: at "USER1.P_PRO", line 5 ORA-04088: error during execution OF TRIGGER 'USER1.P_PRO' Fri Aug 26 22:00:15 2011 Errors IN file /opt/app/oracle/admin/orcl/udump/orcl1_ora_16655.trc: ORA-00600: internal error code, arguments: [1265], [0x42180EA78], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [1265], [0x42180EA78], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [1265], [0x42180EA78], [], [], [], [], [], [] ORA-00600: internal error code, arguments: [1265], [0x42180EA78], [], [], [], [], [], [] ORA-06512: at "USER1.P_PRO ", line 5 ORA-04088: error during execution OF TRIGGER 'USER1.P_PRO' ORA-06512: at "USER1.U_PRO ", line 25 Fri Aug 26 22:00:17 2011 Errors IN file /opt/app/oracle/admin/orcl/udump/orcl1_ora_16655.trc: ORA-00600: internal error code, arguments: [1265], [0x42180EA78], [], [], [], [], [], [] ORA-02067: TRANSACTION OR SAVEPOINT ROLLBACK required Fri Aug 26 22:00:18 2011 Errors IN file /opt/app/oracle/admin/orcl/udump/orcl1_ora_16655.trc: ORA-00600: internal error code, arguments: [17281], [600], [0x2E134EEC0], [], [], [], [], [] ORA-00600: internal error code, arguments: [1265], [0x42180EA78], [], [], [], [], [], [] ORA-02067: TRANSACTION OR SAVEPOINT ROLLBACK required |
这个错误是ORA-600[1265]错误引发的,随后还出现了ORA-600[17281]、ORA-4088和ORA-2067错误。其中ORA-2067的描述为:
$ oerr ora 2067 02067, 00000, "transaction or savepoint rollback required" // *Cause: A failure (typically a TRIGGER OR stored PROCEDURE WITH multiple // remote updates) occurred such that the all-or-nothing execution // OF a previous Oracle CALL cannot be guaranteed. // *Action: ROLLBACK TO a previous SAVEPOINT OR ROLLBACK the TRANSACTION // AND resubmit. |
从这个描述和Oracle的报错信息不难判断,Oracle在通过触发器更新远端表时引发了这个600错误。
根据Oracle的MOS文档Bug 5655419 Distributed transaction hits ORA-600:[1265] or ORA-600:[k2gget: downgrade] in 10.2的描述,这个错误和分布式事务有关,确认影响的版本就是当前环境的10.2.0.4。这个错误的产生一般与窗口维护有关,可以看到问题的发生时刻恰好是22点,从这个时刻开始,Oracle进入维护窗口,进行空间回收统计信息收集等后台工作,显然就是因为窗口的变化导致了这个错误的产生。
Oracle在11.1.0.6中FIXED了这个bug。除了版本升级外,可以考虑将包含分布式事务修改的程序放到远离时间窗口改变时间。