美文网首页我爱编程
基于oracle数据库的dbf文件进行数据复原

基于oracle数据库的dbf文件进行数据复原

作者: igool | 来源:发表于2017-03-23 14:57 被阅读804次

    想象你有一天,你的ORACLE数据库直接垮掉,没有任何征兆,纵然你有良好的习惯,定期备份。可是,如果备份文件不起作用?我的天,不能想象。看一下以下几个苛刻的情况吧。

    1. 完全丢失系统表空间
    2. 系统表空间有坏块
    3. 表空间被删除,但数据文件还存在
    4. 表被删除后,马上停止操作,空间未被重用
    5. 表被清空(Truncate)后马上停止操作,空间未被重用
    6. 一个表空间丢失了部份文件,或文件中有坏块,无法自我修复
    7. Oracle ASM存贮损坏,或Oracle ASM磁盘损坏
    8. 其他无法正常打开数据库或无法查询数据的情况

    AUL,你值得拥有。

    以下是事件还原记录.
    1 下载AUL,[这里](链接: https://pan.baidu.com/s/15EGkTOfTcP5Ft_lpFskXqA) 提取码: ab49
    2 解压aul6.zip,在aul6.exe同级目录下建两个文件,1.cfg和2.cfg,1.cfg中使用的两个dbf是oracle系统的dbf,2.cfg中使用的dbf是你的表空间数据库中存放数据的dbf,其不含有表名/结构等信息,仅存放裸数据。
    1.cfg

    Paste_Image.png

    2.cfg

    Paste_Image.png

    DBF文件说明

    dbf文件主要分类:
    system01.dbf:记录系统运行信息,包含所有数据库字典,PL/SQL程序代码及其他系统信息
    undotbs01.dbf:存放回退信息,即DML操作后的旧数据信息
    sysaux01.dbf:system文件的辅助文件,存放支持oracle系统活动的多种工具如logminer
    users01.dbf:新建用户未指定存储空间是,默认数据存放在该文件中

    3 解压dbf文件头信息
    3.1 运行aul6.exe,自动进入cmd命令行模式。
    3.2 输入命令:open 1.cfg,回车,正常情况,系统会如下显示:

    Paste_Image.png

    3.3 依次输入下列命令,每输完一条命令,回车执行:

    unload table user$;

    unload table obj$;

    unload table tab$;

    unload table col$;
    3.4 完成之后,会产生如下四个文件

    Paste_Image.png

    里面有你想恢复的用户,表等信息。比如我们找到的用户为test。
    3.5 生成待解压的执行脚本,执行命令:open 2.cfg,回车,正常情况,效果应与打开1.cfg时效果相同,输出数据块大小、数量等信息。

    Paste_Image.png

    4 解压数据库表结构,数据信息
    执行命令:list table test to test.txt;回车,生成所有待导出数据表脚本,此处test即数据表的用户名。在aul6.exe同级目录下找到test.txt,正常情况该文件大小不为0,打开,找到待恢复的数据表,把其它记录(大多为系统表)全部删除,保存,将文件扩展名改为sql。如下图:

    Paste_Image.png

    5 执行命令:@test.sql; 执行完后

    Paste_Image.png

    这个就是解压之后的数据表,其中以_sqlldr.ctl结尾的是描述表结构信息,以_syntax.sql结尾的就是创建表的脚本,以txt结尾的就是这个表的数据(这个很关键 )

    6 恢复数据
    6.1 打开plsql,连接一个目标数据库,执行所有以_syntax.sql 结尾的文件,先创建表.确认创建OK之后查看左边PL/SQL的菜单,相关表有没有真正创建成功。
    6.2 使用oracle自带的sqlldr命令装载文本数据,新开cmd窗口,将路径切换到aul6.exe同级目录下,执行命令:
    sqlldr test/123456@orcl control=C:\aul6\TEST_TABLE_sqlldr.ctl

    Paste_Image.png

    如果有多个表,就重复多次,只是表名不一样了。

    当你遇到开头的极端情况(很不幸,我是其中的一员),并且没有有效备份(客户有备份动作,备份不起作用的情况也遇到过)用来恢复数据时, AUL(MyDUL)往往是你最后的机会. 他们的一直坚持的原则就是“拯救数据,帮助客户”!谢谢你,AUL.

    相关文章

      网友评论

        本文标题:基于oracle数据库的dbf文件进行数据复原

        本文链接:https://www.haomeiwen.com/subject/whnznttx.html