暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

李真旭 2017-04-15
2534

前不久某客户的一套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错误。这个小问题在此告一段落。

文章转载自李真旭,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论