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/

相關文章
相關標籤/搜索