Oracle数据库恢复案例

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
日志服务 SLS,月写入数据量 50GB 1个月
云解析 DNS,旗舰版 1个月
简介:

当我们在使用Oracle数据库时,突然断电,造成很多问题,致使旧数据丢失,影响了数据的正确性,破坏了数据库。此时,用户急切需求恢复数据。本文以此为例,讲述数据库数据恢复。

一、案例描述:

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

 

、恢复流程:

 数据库的故障检测

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

3解析数据文件

 4 验证数据

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

 恢复数据          

1数据库的故障检测

利用DBV 命令检测数据文件的完整性

结果如下:

wKiom1arH8uRacvCAABA9IPe88E075.png

 分析结果发现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

  版本数据库,挂起数据库

wKiom1arIAiyN0W1AABOkbNaO7k734.png

起库报ORA-01110错误,System01.dbf需要更多一致性恢复。使用recover database 命令,利用在线日志做介质恢复。

wKiom1arIE7BIdf-AAAVUPNUF5s858.png

数据库的控制文件已被修改,需要使用控制文件恢复数据库

wKioL1arIQmyArwbAABmkOf0gMI745.png

恢复数据库需要2016_01_19的11号归档日志。由于归档日志丢失,使用cancel参数进行不完全恢复。

wKiom1arIQuia0_-AAAtB_ydNBA317.png

再次执行alter database open 命令,数据库打开。

wKioL1arIYzDSd6sAAAglGjjqgk441.png

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

wKioL1arIbGBvUJNAAAeb3ITkwo168.png

 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导出数据库

wKioL1arIfizlmDuAAAvlG_9Y64465.png

 

 expdp 导出数据库报错,和上面查询报同样的错误。sysaux01.dbf文件损坏导致expdp工具不可用,导出数据库失败。尝试使用exp导出数据库

  2.3.2 使用exp导出数据库

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

  3解析数据文件,获取用户数据

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

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

wKioL1arIniBts5LAAF-PvzJcwI242.png

3.2 迁移对象到数据库中

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

四、验证数据

使用toad for oracle工具验证数据

wKiom1arIo-BUD9VAAH6oMVxNWQ840.png

五、导出数据,交付用户

5.1使用exp或者expdp导出zxfg用户下的所有对象,本例采用exp导出数据

命令如下:

exp system/abc  file=C:\test\dump\zxfg.dmp log=C:\test\dump\zxfg.log owner=zxfg

wKioL1arIxqDUy59AACuc4uSwMA616.png

wKiom1arIxWwzJ6LAAB2LkCSqIM765.png

 

  查看导出数据库的dmp文件及导出日志,确保导出文件没有问题。

  5.2用户导入数据,查看导入数据的完整性。

  用户验证数据后,全部正确,并表示非常满意










本文转自 张宇 51CTO博客,原文链接:http://blog.51cto.com/zhangyu/1739889,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
0
0
0
235
分享
相关文章
崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB
文章是作者小草对崖山异构数据库迁移利器 YMP 的初体验分享,包括背景、YMP 简介、体验环境说明、YMP 部署(含安装前准备、安装、卸载、启动与停止)、数据迁移及遇到的问题与解决过程。重点介绍了 YMP 功能、部署的诸多细节和数据迁移流程,还提到了安装和迁移中遇到的问题及解决办法。
服务器数据恢复—云服务器上mysql数据库数据恢复案例
某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被truncate,还有部分表中少量数据被delete。
75 25
数据库数据恢复—SQL Server报错“错误 823”的数据恢复案例
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复。
虚拟化数据恢复—误还原快照导致虚拟机上数据库丢失的数据恢复案例
虚拟化数据恢复环境&故障: vmfs文件系统,存储的数据是SqlServer数据库及其他办公文件。 工作人员误将快照还原,导致了SqlServer数据库数据的丢失,需要恢复原来的SqlServer数据库文件。
74 22
数据库数据恢复——MySQL简介和数据恢复案例
MySQL数据库数据恢复环境&故障: 本地服务器,安装的windows server操作系统。 操作系统上部署MySQL单实例,引擎类型为innodb,表空间类型为独立表空间。该MySQL数据库没有备份,未开启binlog。 人为误操作,在用Delete命令删除数据时未添加where子句进行筛选导致全表数据被删除,删除后未对该表进行任何操作。
数据库数据恢复—MongoDB数据库迁移过程中丢失文件的数据恢复案例
某单位一台MongoDB数据库由于业务需求进行了数据迁移,数据库迁移后提示:“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
SqlServer数据恢复—SqlServer数据库所在分区损坏的数据恢复案例
一块硬盘上存放的SqlServer数据库,windows server操作系统+NTFS文件系统。由于误操作导致分区损坏,需要恢复硬盘里的SqlServer数据库数据。
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
197 11
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
GBase8a 数据库集群v953扩容案例问题分享
GBase8a 数据库集群v953扩容案例问题分享

推荐镜像

更多