您所在的位置:首页 > 成功案例 > ORACLE数据库修复

Oracle数据库断电导致数据丢失的数据恢复

最新动态来源:本站原创点击数:397更新时间:2017/12/18

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,当人们在使用Oracle数据库时如果突然断电就有可能导致数据丢失,本文就讲述了oracle数据库断电导致数据丢失的数据恢复方法和过程。

故障背景:数据库因突然断电,数据库启库报system01.dbf需要更多的恢复来保持一致性,数据库无法打开;数据库没有备份,归档日志也不连续。客户提供了数据库的在线文件,急需恢复zxfg用户下的数据。
恢复方案:检测数据库故障,尝试挂起并修复数据库,解析数据文件。
数据恢复过程:
利用DBV 命令检测数据文件的完整性
图一:
数据库数据恢复_北亚数据恢复中心

分析结果发现SYSAUX01.DBF文件数据块(Data)检测失败40页,索引页(Index)检测失败29页,说明SYSAUX01.DBF存在坏块。通过dbv对数据文件的完整性检验,SYSAUX01.DBF存在坏块,其他检测的文件完整。

用客户的数据库本地挂起数据库,尝试修复数据库。
创建新的OS :windows server 2008 x86,安装oracle 11.2.0.1.0 for 32-bit版本数据库,挂起数据库
图二:
数据库数据恢复_北亚数据恢复中心

起库报ORA-01110错误,System01.dbf需要更多一致性恢复。使用recover database 命令,利用在线日志做介质恢复。
图三:
数据库数据恢复_北亚数据恢复中心

数据库的控制文件已被修改,需要使用控制文件恢复数据库
图四:
数据库数据恢复_北亚数据恢复中心

恢复数据库需要2016_01_19的11号归档日志。由于归档日志丢失,使用cancel参数进行不完全恢复。
图五:
数据库数据恢复_北亚数据恢复中心

再次执行alter database open 命令,数据库打开。
图六:
数据库数据恢复_北亚数据恢复中心

查询实例状态,数据库报ora_00600错误;进行其他查询,其中一些查询可以进行,一些查询报错,而且报错都是ora_00600错误。
图七:
数据库数据恢复_北亚数据恢复中心

查看警告日志 追踪文件查看内部错误代码;
警告日志部分内容如下:ORA-00600: internal error code, arguments: [13013], [5001], [267], [8456009], [5], [8456009], [17], [], [], [], [], []
Non-fatal internal error happenned while SMON was doing logging scn->time mapping.
用expdp/exp工具导出数据库
图八:
数据库数据恢复_北亚数据恢复中心

expdp 导出数据库报错,和上面查询报同样的错误。sysaux01.dbf文件损坏导致expdp工具不可用,导出数据库失败。尝试使用exp导出数据库但是报同样的错误。数据库报严重的内部错误,导致导出工具exp不能使用,甚至一些查询都不能进行,导出数据库失败。

由上可知,数据库的恢复已不可能。使用北亚自主研发DBF解析工具的,获取数据。
图九:
数据库数据恢复_北亚数据恢复中心

迁移对象到数据库中。创建数据库,在数据库中创建用户,为用户分配表空间,解锁用户并授权。然后,通道数据的搭桥的方式,将解析到的用户对象迁移到数据库中。

使用toad for oracle工具验证数据
图十:
数据库数据恢复_北亚数据恢复中心

使用exp或者expdp导出zxfg用户下的所有对象,本例采用exp导出数据
命令如下:exp system/abc ?file=C:\test\dump\zxfg.dmp log=C:\test\dump\zxfg.log owner=zxfg
图十一:
数据库数据恢复_北亚数据恢复中心

查看导出数据库的dmp文件及导出日志,确保导出文件没有问题。用户导入数据,查看导入数据的完整性。