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

ODU:ORACLE DATABASE UNLOADER

DUL:DATA UNLOADER

AUL:也称MyDUL

关于三种工具说明:

(1)Oracle 的内部工具是DUL(Data UnLoader)。这个需要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,也是需要购买授权。

1、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参此时才会用到。 
2、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加密的数据

3、AUL

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

AUL功能特点功能特点:

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

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

支持的数据类型有:NUMBER、DATE、CHAR、VARCHAR2、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/

ORACLE恢复神器之ODU/AUL/DUL的更多相关文章

  1. Oracle DBA神器之Toad

    很早就听说Toad功能很强大,一直没有使用过,因为PLSQL Developer就很好用.前几天看见同事优化Oracle就是用的Toad,有一些很强大的管理功能,于是再一次对Toad产生兴趣,收集了一 ...

  2. Oracle恢复已删除数据

    Oracle恢复已删除的数据,主要有两种方法:SCN和时间戳. 一.通过SCN恢复删除且已提交的数据 1.获得当前数据库的scn号 select current_scn from v$database ...

  3. oracle 恢复备份

    select * from dbconninfo update dbconninfo set url = 'jdbc:oracle:thin:@(description=(address_list=( ...

  4. python三大神器之virtualenv pip, virtualenv, fabric通称为pythoner的三大神器。

    python三大神器之virtualenv   pip, virtualenv, fabric通称为pythoner的三大神器. virtualenv virtualenv------用来建立一个虚拟 ...

  5. Oracle恢复表数据

    Oracle恢复数据 在oracle 10g以及之后的版本,提供了回收站的机制,为了防止误操作将表数据清空而有回收机制. 换句话说,我们删除的表不会立马消失,而是进入回收站.下面我们可以查看回收站 查 ...

  6. [转帖]APP逆向神器之Frida【Android初级篇】

    APP逆向神器之Frida[Android初级篇] https://juejin.im/post/5d25a543e51d455d6d5358ab 说到逆向APP,很多人首先想到的都是反编译,但是单看 ...

  7. SSH客户端神器之 MobaXterm

    SSH客户端神器之 MobaXterm 由于需要连接远程 Linux 服务器,早期使用过 Putty,SecureCRT,后面主要使用 Xshell. 自从接触了 MobaXterm之后,个人感觉比 ...

  8. Oracle恢复ORA-00600: 内部错误代码, 参数: [kcratr_scan_lastbwr] 问题的简单解决

    Oracle恢复ORA-00600: 内部错误代码, 参数: [kcratr_scan_lastbwr] 1. 简单处理 sqlplus / as sysdba startup mount recov ...

  9. Oracle 恢复被删除的数据,解决误操作删除数据

    在删除数据的时候不小心,把delete语句执行错了,把别的表给delete,而且还执行了commit!真汗.......数据是相当的重要........废话少说了!赶快找方法吧: 第一种: 1.打开F ...

随机推荐

  1. 网站搭建 so easy

    服务器(国际购买):http://www.gigsgigscloud.com/ 域名(阿里云): 解析到服务器       服务器需要安装 1.putty 2.CuteFTP(自己感觉这个靠谱点) / ...

  2. jstl <c:forEach> 介绍

    varStatus是<c:forEach>jstl循环标签的一个属性,varStatus属性.就拿varStatus="status"来说,事实上定义了一个status ...

  3. JS中的for/in语句和arguments参数

    在js应用中,有时候我们会遇到希望定义一个函数可以被不同情况调用,比如参数个数不固定的情况. 可以使用for/in语句和arguments参数解决. 举个简单例子:定义一个计算总和的函数,需要计算的数 ...

  4. JavaScript(复习总结)

    一.三个常用对话框 1.alert(""):警告对话框,作用是弹出一个警告对话框(最常用) 2.confirm(""):确定对话框,弹出一个带确定和取消按钮的对 ...

  5. (转)UVM内容梗概

    1. 类: 面向对象基础传统的面向对象编程与systemverilog类的特点,类的定义,成员与方法,构造函数,对象的复制和深/浅拷贝,父类/子类关系,类的继承,作用域的规则,对象的句柄以及赋值,方法 ...

  6. iOS开发-xcdatamodeld文件 CoreData的介绍和使用,sqlite的使用

    CoreData的介绍和使用  源引:http://www.jianshu.com/p/d027090af00e CoreData是数据存储的一种方式,CoreData实质也是对SQLite的封装. ...

  7. Selenium2+python自动化6-八种元素元素定位(Firebug和firepath)

    前言 自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇主要讲如何用firefox辅助工具进行元素定位. 元素定位在这四个环节中是至 ...

  8. Codeforces Round #383 _python作死系列

    A. Arpa's hard exam and Mehrdad's naive cheat 题意求1378的n次方的最后一位,懒的写循环节 瞎快速幂 py3 int和LL 合并为int了 def q_ ...

  9. golang--gopher北京大会(1)

    大会感想:牛人真的很能写代码,实现很多功能,而且开源的精品越多,影响力越大,越能过上dream life.比如beego的作者,去了America,进入了Apple.另外,精英们特点是表达能力很强,也 ...

  10. HttpModule的一些初步认识

    新建一个类 ValidaterHttpModuleEvents继承管道接口 IHttpModule,代码如下 public class ValidaterHttpModuleEvents:IHttpM ...