love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

ORA-00600: internal error code, arguments: [4187]

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

本文链接地址: ORA-00600: internal error code, arguments: [4187]

前不久某客户的一套Oracle RAC,其中一个节点由于主机宕机重启后,数据库频繁crash,信息如下:

从上述错误来看,很明显是SMON进程在进行事务恢复时出现了异常,当报错此时达到100次时,实例会被强制crash重启。
首先我们这里来看下上述trace文件的内容:

从上述信息来看,Oracle 提示undo block可能有损,因为这里提示为block after image. 很明显这个buffer block地址是file 4 block 272.所以这里我先尝试dbv 检测一下该文件(本质上是undo datafile)是否存在异常,如下是dbv的结果。

我检测发现undo 文件居然是ok。那么问题出在什么地方呢? 既然这是undo segment header block,那么就dump一下看看。

从上面整个回滚段头的dump来看,信息确实与redo的内容不匹配,难怪最后会报INVALID block。
对于这个问题,同事说可能是Bug 19700135 : ORA-600 [4187] WHEN WRAP# IS CLOSE TO KSQNMAXVAL。
然而我分析了一下,从现象上来看,并不完全复合。
不管怎么说,从dump 来看这个回滚段并没有任何活动的事务,因此可以通过重建undo或者drop 回滚段的方式来处理这个问题。
最后我通过重建undo表空间之后,观察了10分钟,alert log不再报任何ORA-00600错误。这个小问题在此告一段落。

Leave a Reply

You must be logged in to post a comment.