使用Oracle数据库时,突然关闭电源,引起了很多问题,旧数据丢失,影响了数据的准确性,破坏了数据库。 此时,用户迫切需要恢复数据。 本文介绍了数据库的数据恢复。
一、 案例描述:
由于数据库突然关闭,数据库启动库需要更多恢复才能使system01.dbf保持一致,无法打开数据库; 数据库没有备份,归档日志也不连续。 客户提供数据库的在线文件,以获取zxfg用户下的数据。
二 、恢复流程:
1数据库故障检测
2尝试挂起并修复数据库
3分析数据文件
4验证数据
5导出数据和交付数据(导入)
三,恢复数据
1数据库的故障检测
使用DBV命令检测数据文件的完整性
结果如下。
分析结果显示,SYSAUX01.DBF文件数据块(Data )检测失败的页面为40页,索引页(Index )检测失败的页面表示SYSAUX01.DBF中存在坏块
结论dbv数据文件完整性检测表明,SYSAUX01.DBF存在坏块,其他检查文件完整。
2 用客户的数据库本地挂起数据库,尝试修复数据库。
2.1创建新操作系统:安装windowsserver2008x86、Oracle 11.2.0.1.0 for 32位
版本数据库、挂起数据库
库报告了ORA-01110错误。 System01.dbf需要更多一致的恢复。 使用recover数据库命令将在线日志用于介质恢复。
数据库的控制文件已更改。 必须使用控制文件恢复数据库
数据库恢复需要2016_01_19的11号归档日志。 由于归档日志丢失,将使用cancel参数进行不完整的恢复。
再次运行alter database open命令以打开数据库。
2.2查询实例状态,数据库报告ora_00600错误; 执行其他查询。 有些查询可以执行,有些查询报告错误。 此外,报告错误的是ora_00600错误。
2.4显示警告日志跟踪文件显示内部错误代码;
警告日志的内容如下。
ora-00600:国际错误代码,arguments: [13013],[5001],[267],[8456009],[5],[8456009],[17]
非均匀互连rrorhappennedwhilesmonwasdoingloggingscn-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将对象迁移到数据库
创建数据库、在数据库中创建用户、为用户分配表空间、解锁和批准用户。 并且,在通道数据的旁路方式中,将被分析的用户对象转移到数据库。
四、验证数据
使用Oracle toad for工具验证数据
五、导出数据,交付用户
5.1使用exp或expdp导出zxfg用户下的所有对象。 在此示例中,使用exp导出数据
命令如下:
exp system/abcfile=c :testdumpzxfg.DM plog=c :testdumpzxfg.log owner=zxfg
检查导出数据库中的dmp文件和导出日志,确保导出文件没有问题。
5.2用户导入数据,确认导入数据的完整性。
用户验证数据后,结果均正确,表示非常满意