ORACLE恢复神器之ODU/AUL/DUL

分享ORACLE数据库恢复神器之ODU、DUL和AUL工具。linux

     ODU:ORACLE DATABASE UNLOADERsql

     DUL:DATA UNLOADER数据库

     AUL:也称MyDUL浏览器

关于三种工具说明:安全

   (1)Oracle 的内部工具是DUL(Data UnLoader)。这个须要Oracle 的支持。oracle

   (2)老熊写的ODU   网址:http://www.oracleodu.com/en/工具

   (3)d.c.b.a (支付宝 楼方鑫)写的AUL. 网址:http://www.anysql.net/download学习

ODU以前是免费的, 如今老熊和dbsnake在维护ODU,须要购买才能使用。 测试

d.c.b.a的AUL是用C语言写的, 免费版本最大只支持2个,最大256M的datafile。 若是是更大的datafile,也是须要购买受权。网站

一、DUL

      DUL不是一个商用化的产品,Oracle不卖、不提供也不支持它的使用。DUL只有在Oracle的内部网 站才能够下载到,所以也只有Oracle 的Supporter才能下载到有这个工具,若是与Oracle的Supporter熟悉,没准他私底下会给你一个,这个工具也所以有一些流落到民间,被一些人收入囊中,奉为珍宝。 

      不一样的平台、不一样版本的数据库都有相应的DUL软件,9.x 及以前DUL是没有License限制的,也就是有这个工具能够无限制的使用,不过最新的DUL在这方面已经改进了,kamus说最新DUL拿到手只能用一个月。 

得到DUL有如下几种途径: 

若是你是Oracle的Supporter,能够在内部网站下载,地址为:

       http ://www.nl.oracle.com/support/dul/ 

若是你有Oracle的Supporter的朋友能够向他们要一个,itpub也几位斑竹都到 Oracle了,如coolyl、kamus、lunar。一些dul流落到民间,能够向有这软件的朋友要一个,不过他们必定要有你须要的那个。 

DUL 支持分区表、索引组织表(IOT)这些选项,支持标准的数据类型及据结构,具体以下: 

        支持行连接和行迁移 

        支持哈希和索引cluster 

        支持NULL列 

        支持LONG、RAW、DATE、NUMBER、ROWID 

        支持多free list group 

        支持多字节字符集 

        支持LOB 类型列,不过须要注意的是,有LOB类型列的表在作DUL时输出须要为SQL*Loader格式。 

DUL有什么限制和危险

        DUL 毕竟是一个大小几百K的一个小工具而已,而Oracle功能愈来愈复杂,也于是有一些是DUL不支持或作的不完备的。前面已经提到,你的数据库能够是启动不了的,可是要Unload的数据的据文件、数据块是保证是好的, 为DUL在Unload过程当中会对数据块作检验,检验读到的数据块是否是块的,是否是属于正确的段。若是发现坏块,DUL会在屏幕显示出错误信息,同时将报错信息写到日志。 

        DUL支持多级别安全标签(MLSLABEL) , 支持VARRAY,OBJECT类型列,也支持嵌套表。DUL在Unload过程当中不会考虑到数据库一致性,它假定全部数据文件中的数据都是已经提交了的,没有了数据一致性的校验DUL实际作的是脏读,这是DUL比较大的缺点。不过关于这一点也是有点好处的,能够用此恢复TRUNCATE/DROP误操做的表。 

DUL 的输出格式 

       以.dmp为输同格式时每表生成一个文件(owner_tablename.dmp) ,以sql*loader为输出格式时每表生成两个文件(owner_tablename.ctl和 owner_tablename.dat) 。若是设定了FILE 参数,生成的文件名将 会为FILEnnn.ext,若是你的操做系统不支持长文件名,FILE参此时才会用到。 
二、ODU

      ODU全称为Oracle Database Unloader,是由OracleODU开发的相似于Oracle的DUL的一款恢复软件,用于直接从Oracle数据库的数据文件中获取表数据。在各类缘由形成的数据库不能打开时,用于抢救数据,最大限度地减小数据丢失。在一些实际的恢复案例中,DUL并不能将全部的重要数据都恢复出来(或者恢复出来的CLOB数据是乱码),但ODU却能够。
获取ODU地址
ODU最新正式版:
        Windows版本:odu_421_win32.zip
        Linux版本:odu_421_linux_x86.tar.gz
        AIX版本:odu_421_aix53.tar.gz
        HP PA-RISC版本:odu_414_hppa.tar.gz
        HP IA64版本:odu_414_hp_ia64.tar.gz
        Solaris SPARC版本:odu_421_sol_sparc.zip
ODU最新试用版:
        Windows版本:odu_trial_413_win32.zip
        Linux x86版本:odu_trial_413_linux_x86.tar.gz
        AIX版本:odu_trial_413_aix53.tar.gz
        HP PA-RISC版本:odu_trial_412_hppa.tar.gz
        HP IA64版本:odu_trial_412_hp_ia64.tar.gz
        Solaris SPARC版本:odu_trial_413_sol_sparc.zip
        ODU正式版和试用版的区别:试用版仅用于测试、学习和验证,只能恢复SYSTEM表空间下的数据,对于其余表空间的数据,仅恢复少许的数据以验证数据可恢复。而正式版在获取LICENSE后可以恢复全部可以恢复的数据。
        在使用IE浏览器下载ODU软件时,IE浏览器可能会将安装包的tar.gz扩展名自动改成tar.tar,对于这样的改变,请将文件的扩展名改回为tar.gz。

ODU的主要功能点:

        (1)不须要运行Oracle数据库软件,ODU直接读取数据库文件解析数据。

        (2)支持ASM,可以直接从ASM磁盘中导出数据,即便相关的磁盘组不能成功mount

        (3)支持从ASM中直接抽取出数据文件和其余任意存储在ASM中的文件(包括控制文件、日志文件和归档日志等),即便相关的磁盘组不能成功mount

        (4)支持的Oracle数据库版本包括7,8i,9i,10g,11g

        (5)支持多种平台的数据库,包括AIX、LINUX、HPUX、SOLARIS、WINDOWS等。可以在一个平台上导出其余平台的数据,好比在Windows 32位系统上,使用AIX系统上的数据文件导出数据。

        (6)支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i+) , BINARY FLOAT, BINARY DOUBLE (10g+)

        (7)全面支持LOB字段:

            支持CLOB、NCLOB和BLOB,CLOB支持Big Endian和Little Endian字节序

            支持LOB分区,子分区

            支持同一个表中,不一样LOB列使用不一样CHUNK SIZE的状况

            CLOB数据能够导出到与其余列相同的文件中,或存储到单独的文件

            LOB列在没有SYSTEM表空间的状况下仍然可以导出

            LOB列在相关的lob index损坏的状况下依然可以导出

        (8)支持各类表,包括普通的HEAP表,IOT表和聚簇(CLUSTER)表

        (9)支持IOT表:

        (10)支持普通IOT表的导出

        (11)支持压缩IOT表的导出

        (12)支持IOT表溢出段

        (13)支持IOT表分区(包括子分区)

        (14)只能在有SYSTEM表空间时才能导出IOT表

        (15) 支持压缩表

        (16)支持表被truncate后的数据恢复

        (17)支持表被drop后的数据恢复

        (18)在有SYSTEM表空间的状况下,自动获取数据字典信息

        (19)支持在没有SYSTEM表空间和数据字典损坏的状况下恢复数据,在没有数据字典可用时,ODU可以自动判断数据的类型

        (20)支持10g及以上的大文件(BigFile)表空间

        (21)全面支持64位系统,支持超过4G大小的数据文件。

        (22)支持复制操做系统命令不能复制的坏文件

        (23)支持同一个库中不一样块大小的数据文件。

        (24)支持多种字符集之间的转换,可以正确的转换CLOB、NCLOB、NVARCHAR2列类型的数据到指定的字符集。

        (25)自动检测数据文件的表空间号和文件号

        (26)导出的数据格式包括纯文本和DMP文件两种。以纯文本导出时,可以自动生成建表的SQL语句和SQL*Loader导入所需的control文件

        (27)模拟Oracle的dump块功能,可以dump数据文件中的数据块

        (28)支持DESC表,以显示表的列定义

        (29)支持列出表的分区和子分区

ODU目前不支持的功能:

        (1)11g的SecureFiles

        (2)使用Oracle TDE加密的数据

三、AUL

       AUL是 AnySQL UnLoader 的简写,和DUL具备相同的功能,能够离开Oracle的运行环境将数据文件中的数据读取出来存成文本文件或DMP格式的文件。

AUL功能特色功能特色:

        AUL 支持 Oracle 8/8i/9i/10g 四个版本,而对 Oracle7并不提供支持。  

        支持表、聚族(Cluster)及索引组织表(IOT)的恢复

        支持的数据类型有:NUMBER、DATE、CHAR、VARCHAR二、RAW、LONG、LONG、RAW、BINARY_FLOAT、BINARY_DOUBLE、TIMESTAMP、TIMESTAMP WITH TIME ZONE、CLOB 及 BLOB,基本上覆盖了咱们最经常使用的数据类型,为恢复提供了可靠的保障。  

        能够恢复成文本方式及 DMP(Oracle 8.1.7 版本)格式。  

        采用标准C语言写成,运行速度极快,很容易能够移植到各类不一样的平台, 

        如今已经顺利编译的平台有 Windows、Linux、AIX 和 Solaris (Sparc)。  

        支持跨平台的恢复,如用Windows下的 AUL 软件来恢复损坏的Solaris平台下的Oracle 数据库文件.

支持 CLOB及 BLOB,支持不一样的CHUNK SIZE,但同一个表的各个 CLOB 的CHUNK SIZE 必须相同。  

什么状况下使用

        当你的数据库损坏,而且没有备份或备份已经不可用,在偿试其余全部办法均 失败的状况下,能够考虑使用AUL 来恢复你的数据。AUL 能够将数据从数据文件中读取出来,但毫不是去修复损坏的数据文件,你须要将恢复出来的数据从新导入或 

用 SQL Loader 装载到新的数据库中。当你遇到下面的情形时,你能够考虑用AUL进行最后的数据恢复:  

行最后的数据恢复: 

        (1)丢失系统表空间文件.  

        (2)系统表空间文件损坏.  

        (3)表空间删除了但数据文件还存在. 

        (4)表被删除但那部份空间尚未被重用. 

        (5)使用权用"reuse storage"选项截断(TRUNCATE)表. 

        (6)表被截断, 但释放出来的空间尚未被其余对象重用. 

        从上面能够看出,当你不当心删除或截断了表又没有备份时,首先要作的是停全部的数据库应用,将表所在的数据文件做冷备份,以防止释放出来的空间被覆,若是被新的记录覆盖了,那么不管谁都没有办法帮你恢复失去的数据了。从过去两年的状况看,这样的人为错误竟然占多数。

AUL不彻底免费

    AUL 不是开源的,也不是彻底免费的。为何说他不是彻底免费的呢?免费的AUL只能打开最多四个数据文件,而且每一个文件只能读取最前面的512MB 内容。

AUL的下载地址:

AUL5 for Windows

AUL5 for Linux

AUL5 for Linux x86-64

AUL5 for AIX

AUL for Oracle ASM

特别提示:

       以上所列的三种工具,不到必不得以不要轻易尝试,以上操做要慎重,不然后果更加严重。对于DBA来讲,备份是基础,且不能大意。牢记。

 

本文转自:http://czmmiao.iteye.com/blog/1539858 

参考:    

    《Lfie is DUL without it》杨宝秋著
    《AnySQL Unloader用户指南》 楼方鑫著
    《ODU使用指南》 熊军著

     http://www.mydul.net/cn/

相关文章
相关标签/搜索