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

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

Linux文件系统异常导致数据库文件无法访问

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

本文链接地址: Linux文件系统异常导致数据库文件无法访问

51节前某政府单位客户数据库出现异常;大致现象是:数据库状态是open的;但是其中一个数据文件无法访问;通过ls 查看文件都报错,如下所示:

同时dd命令也无法读取该文件:

此时在从数据库层面看到的信息类似如下:

从上述信息来看,数据库第11号文件无法读取;其中在我们进行恢复之前,客户进行了多次尝试,还遭遇了一些数据库坏块,也遇到了不少ora-00600 错误:

上述ora-00600 错误,总的来都是相对常见的;几乎都可以定性为数据坏块;对于file 3的坏块,处理相对简单,直接drop或者truncate相关对象即可;然后重建awr。

但是对于第11号数据文件,怎么办呢?这里我们的处理方法是就当文件丢失处理(很久之前处理过Windows环境数据文件大小为 0 kb的问题);这几种情况都类似。

这里我说一下简单的处理思路:

1、通过odu 扫盘;分别以不同offset方式来扫(0和4096);

2、对比两次扫描结果;组合extent信息;抽取文件。

由于这里文件不多,只有1个;大小20g左右;通过dd 拼接即可。

最终文件拼接完成后,由于这里是非归档环境,无法进行正常recover,因此还需要通过bbed来修改数据文件头的checkpoint信息。

 

对于文件系统来讲,目前已经不是Oracle存储的最佳选择了,建议使用ASM。当然;其他数据库比如MySQL、PostgreSQL除外。

 

题外话:昨天遇到某客户通过400电话求助,PostgreSQL 被加密勒索(大概是每个文件前面2Mb左右);这种处理是比较麻烦的;目前还没有发现很好的扫盘或者扫描文件的工具。后面有时间再研究一下。

Leave a Reply

You must be logged in to post a comment.