分享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. Device Path in WinPrefetchView

    As we know that the Prefetch file is used for optimizing the loading time of the application in the ...

  2. 在SWING里嵌入SWT的组件

    http://zhanghan3366.blog.163.com/blog/static/6966305220110505351568/ ——————————————————————————————— ...

  3. dockerfile学习与详解

    1,什么是dockerfile? dockerfile是相当于docker使用的一个脚本,作用是便于实现自定义的镜像image,用语docker build [OPTIONS] PATH ,只需要指定 ...

  4. 修改win10打开文件资源管理器

  5. 未能加载文件或程序集Microsoft.ReportViewer.WebForms, Version=10.0.0.0

    解决方案如下ASP.NET项目使用VS2010开发,部署到windows 2008环境中,出现未能加载文件或程序集“Microsoft.ReportViewer.WebForms, Version=1 ...

  6. python-操作MySQL数据库

    1.安装MySQLdb? 为了用DB-API编写MySQL脚本,必须确保已经安装了MySQL.复制以下代码,并执行: #!/usr/bin/python # -*- coding: UTF-8 -*- ...

  7. String与StringBuffer的区别

    首先,String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringB ...

  8. ArcGIS删除部分数据后全图范围不正确

      我有一个全国地图的图层,现在删除图层中其他省份,只保留山东省的图形,但是点击全图后,全图范围仍然是全国地图时候的全图范围,使用的版本是ArcGIS9.3,数据存放在9.3的个人数据库中(Perso ...

  9. [学习笔记] 七步从AngularJS菜鸟到专家(6):服务 [转]

    这是"AngularJS – 七步从菜鸟到专家"系列的第六篇. 在第一篇,我们展示了如何开始搭建一个AngularaJS应用.在第五篇我们讨论了Angular内建的directives.在这一章,我们 ...

  10. 6本Android开发必备图书

    学习一样新事物或许有多种方式,报培训班,看视频,向高手请教等等,但一本好书往往可以让你少走很多弯路,事半功倍.今天与大家分享一些Android开发值得一读的书籍,希望对新手安卓开发者们有所帮助. 1. ...