oracle aul 索引,ORACLE恢復神器之ODU/AUL/DUL

论坛 期权论坛 脚本     
已经匿名di用户   2022-5-29 19:28   1763   0

分享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的下載地址:

特別提示:

以上所列的三種工具,不到必不得以不要輕易嘗試,以上操作要慎重,否則后果更加嚴重。對於DBA來說,備份是基礎,且不能大意。牢記。

參考:

《Lfie is DUL without it》楊寶秋著

《AnySQL Unloader用戶指南》 樓方鑫著

《ODU使用指南》 熊軍著

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP