-4006-505-646

Oracle数据库无法打开恢复案例


【数据故障情况描述】

经用户描述数据库因突然断电,数据库启库报system01.dbf需要更多的恢复来保持一致性,数据库无法打开;数据库没有备份,归档日志也不连续。客户提供了数据库的在线文件,急需恢复ZXFG用户下的数据。

【数据恢复情况分析】

1、数据库的故障检测;

2、尝试挂起数据库并修复数据库;

3、解析数据文件;

4、验证数据;

5、导出数据与交付数据(导入);

【数据恢复过程】         

1、数据库的故障检测;利用DBV命令检测数据文件的完整性,分析结果发现SYSAUX01.DBF文件数据块(Data)检测失败40页,索引页(Index)检测失败29页,说明SYSAUX01.DBF存在坏块。

结论:通过DBV对数据文件的完整性检验,SYSAUX01.DBF存在坏块,其他检测的文件完整。

2、 用客户的数据库本地挂起数据库,尝试修复数据库。

2.1 创建新的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 命令,数据库打开。

2.2 查询实例状态,数据库报Ora_00600错误;进行其他查询,其中一些查询可以进行,一些查询报错,而且报错都是Ora_00600错误。

2.3查看警告日志追踪文件查看内部错误代码;

图一:

图片2.png

进行各种尝试,数据库的这种内部错误,不能通过命令修复,尝试导出数据库。

2.4 用EXPDP/exp工具导出数据库;

2.4.1使用EXPDP导出数据库;

EXPDP 导出数据库报错,sysaux01.dbf文件损坏导致EXPDP工具不可用,导出数据库失败。尝试使用exp导出数据库。

2.4.2 使用exp导出数据库;

exp导出数据库,和上面报同样的错误。数据库报严重的内部错误,导致导出工具exp不能使用,甚至一些查询都不能进行,导出数据库失败。

5、解析数据文件,获取用户数据;

由上可知,数据库的恢复已不可能。底层解析,解析数据文件,获取用户对象。

5.1 使用北亚自主研发DBF解析工具的,获取数据。结果如下:

图片1.jpg

5.2 迁移对象到数据库中

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

【数据验证及导出】

使用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文件及导出日志,确保导出文件没有问题,用户导入数据,查看导入数据的完整性。

  

当人们在使用Oracle数据库时突然断电,极有可能致使旧数据丢失,影响数据正确性,破坏数据库。一旦发生此类故障,首要任务便是恢复数据。


北京北亚数据恢复中心:4006-505-646