案例:Troubleshooting ORA-00600[4137] Error

本次案例来自北区某客户,数据库版本为11.2.0.4,alert频繁报错ORA-00600: internal error code, arguments: [4137]。通常ORA-00600[4XXX]错误都与undo息息相关。

分析smon trace文件

该错误发生在事务回滚期间,从trace可以看到回滚的事务XID为0x00af.019.00033e5f,但是在undo block中事务XID却是0x0080.005.000a76e7,所以抛出了ORA-00600: internal error code, arguments: [4137]错误。

继续分析trace,首先找到undo段头块

通过事务表可以找到事务回滚的起点undo block,rdba为0x36c343a7。

搜索36c343a7可以找到事务回滚起点的undo block

的确该undo块中的事务XID为0x0080.005.000a76e7,明显与要回滚的事务XID不匹配。

造成该问题的原因有很多,比如非一致性的open过数据库,写丢失等等,由于该库从未做过非一致性open数据库的操作,所以个人比较怀疑存在写丢失的现象。

处理该错误的方法可以使用“_corrupted_rollback_segments”标记该事务的undo段,从而禁用掉该回滚段的回滚操作,或者设置10513 event禁用整个实例的回滚,导出重建对象。

该case中,从undo chain中可以看到涉及对象为87229

对象为awr中sqlstat的基表,并不是业务表,也不是非常核心的内部字典表,处理就非常easy了,truncate掉即可。

over!

 

此条目发表在Oracle, Oracle troubleshooting分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注