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

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

win 环境 O/S-Error: (OS 23) 数据错误(循环冗余检查) —恢复

前几天玩转oracle 总群的一个哥们求助说,数据库坏了,简单的看了下,应该是盘出问题了。
他这里的情况跟eygle以前遇到的某个case完全一样,错误如下:

详情可以参考eygle的博客 http://www.eygle.com/archives/2011/06/ora_01115_io.html
不过未说明具体的恢复过程,较为遗憾。

这哥们这里不同的是损坏的文件是某个业务数据文件而非system文件,也是由于datafile header
出现问题。虽然是windows环境,不过我仍然用dbv和dd进行了检查。

在用dbv检测的过程中,上面所报的DBV-00102错误,metalink 上提供了一个将datafile resize 变大一个block,
然后再resize回原状的方法来避免这个错误,但是在这里显然也是不能成功,因为这是物理损坏。

或许大家或许会跟那位网友有一样的疑问,我是如何知道是数据文件头坏了呢?很简单,下面我通过dd就能看出了,如下:

由于这是一个非归档,无备份的环境(再次强调备份的重要性),用eygle的话说,只能通过bbed或其他极端手段来修复。
恢复方法是复制一个完整的file header block(用dd),然后再用bbed或UE去手工修改),当然这里建议使用bbed,用ue去修复
太困难,太麻烦了,反正我是看不明白,看起来就眼花。

这个较为极端的case,跟大家分享。

Leave a Reply

You must be logged in to post a comment.