在尝试撤销事务的时候碰到两次ORA-600错误。
第一次错误信息为:
ORA-00600: 内部错误代码, 参数: [17147], [0xFFFFFFFF75735C90], [], [], [], [], [], []
Incident details in: /data/oracle/diag/rdbms/test11g/test11g/incident/incdir_6421/test11g_ora_4445_i6421.trc
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0xFFFFFFFF9CB6B1E0] [PC:0x1057AD6A8, kghrcdepth() 488]
Errors in file /data/oracle/diag/rdbms/test11g/test11g/trace/test11g_ora_4445.trc (incident=6422):
ORA-07445: 出现异常错误: 核心转储 [kghrcdepth() 488] [SIGSEGV] [ADDR:0xFFFFFFFF9CB6B1E0] [PC:0x1057AD6A8] [Address not mapped to object] []
ORA-00600: 内部错误代码, 参数: [17147], [0xFFFFFFFF75735C90], [], [], [], [], [], []
Incident details in: /data/oracle/diag/rdbms/test11g/test11g/incident/incdir_6422/test11g_ora_4445_i6422.trc
从metalink上对于17147错误的描述,错误是由于内存中的某些chunk头被覆盖掉。关于ORA-600 17147错误的总体描述可以参考metalink文档:Note:138580.1。
第二个错误信息为:
ORA-07445: 出现异常错误: 核心转储 [krvuam() 268] [SIGBUS] [ADDR:0x27584D4C4C6F616C] [PC:0x100E9302C] [Invalid address alignment] []
Incident details in: /data/oracle/diag/rdbms/test11g/test11g/incident/incdir_6423/test11g_ora_8836_i6423.trc
Wed Dec 19 10:36:14 2007
Errors in file /data/oracle/diag/rdbms/test11g/test11g/trace/test11g_ora_8836.trc (incident=6424):
ORA-00600: 内部错误代码, 参数: [kghrcdepth:ds], [0xFFFFFFFF76C80AF0], [], [], [], [], [], []
ORA-07445: 出现异常错误: 核心转储 [krvuam() 268] [SIGBUS] [ADDR:0x27584D4C4C6F616C] [PC:0x100E9302C] [Invalid address alignment] []
Incident details in: /data/oracle/diag/rdbms/test11g/test11g/incident/incdir_6424/test11g_ora_8836_i6424.trc
根据krvuam参数在metalink中查询,发现绝大部分这种错误出现在LOGMINER过程中,而当前就是在进行LOGMINER时出现的错误。
这两个错误都只出现了一次,而且随后多次测试也没能重现。其中第一个错误的先关metalink文档中也提到了,这种错误一般都是一次性出现,很难重现。
总的来说,撤销事务的bug还是相对比较多的,不过对于这种实现相对比较复杂的新功能而言还是可以接受的。