593249217
总版主
总版主
  • 注册日期2010-11-25
  • 发帖数385
  • QQ593249217
  • 火币969枚
  • 粉丝282
  • 关注1
  • 优秀斑竹奖
  • 特殊贡献奖
  • 幽默大师奖
  • 社区明星
阅读:6514回复:1

Oracle数据库恢复

楼主#
更多 发布于:2017-05-15 17:12
一、案例描述:
数据库因突然断电,数据库启库报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.4查看警告日志 追踪文件查看内部错误代码;
警告日志部分内容如下:
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.
进行各种尝试 ,查阅大量资料。数据库的这种内部错误,不能通过命令修复。尝试导出数据库。
2.3 用expdp/exp工具导出数据库;
  2.3.1使用expdp导出数据库
expdp 导出数据库报错,和上面查询报同样的错误。sysaux01.dbf文件损坏导致expdp工具不可用,导出数据库失败。尝试使用exp导出数据库
2.3.2 使用exp导出数据库
exp导出数据库,和上面报同样的错误。数据库报严重的内部错误,导致导出工具exp不能使用,甚至一些查询都不能进行,导出数据库失败。
3解析数据文件,获取用户数据
由上可知,数据库的恢复已不可能。底层解析,解析数据文件,获取用户对象。
3.1 使用三孚自主研发DBF解析工具的,获取数据。结果如下:





3.2 迁移对象到数据库中
创建数据库,在数据库中创建用户,为用户分配表空间,解锁用户并授权。然后,通道数据的搭桥的方式,将解析到的用户对象迁移到数据库中。
四、验证数据
使用toad for oracle工具验证数据


五、导出数据,交付用户
5.1使用exp或者expdp导出zxfg用户下的所有对象,本例采用exp导出数据
查看导出数据库的dmp文件及导出日志,确保导出文件没有问题。
5.2用户导入数据,查看导入数据的完整性。
用户验证数据后,全部正确,并表示非常满意
                                  山东三孚信息技术有限公司
                                   http://www.ictservices.cn  


喜欢0 评分0
多一分钟时间学习,就多一份技术!
1160708674
侠客
侠客
  • 注册日期2017-10-20
  • 发帖数49
  • QQ116008674
  • 火币58枚
  • 粉丝0
  • 关注0
沙发#
发布于:2018-02-15 16:26
回复(0) 喜欢(0)     评分
游客

返回顶部