2014年7月3日 星期四

AUL 工具



ORACLE AUL 工具

這是一個由網路強人開發出來的軟體,可直接讀取DBF檔案內的資料,使發生狀況時把災害降到最小

網站: http://www.mydul.net/cn/index.html

是半免費軟體,沒有購買 licence 最多允許同時打開10個 DBF檔案 ,並且只能訪問前512MB 內容




我們都知道 Truncate table 並不是把資料完全刪除,而是重置了 metadata 及 Dictionary 的資訊,此時 Table 內的資料並沒有消失,只是等待被Oracle 回收利用或重新分配,就是為什麼Truncate 比 delete 還快的原因就在這了。

要做到有效的恢復,在操作人員誤執行Truncate table 後 ,必須立刻阻止對Table 任何的異動( 可以tablespace offline 或 db shutdown )


接下來示範一下如何把 Truncate 後的資料救回

AUL測試版本:6

1.truncate table

SQL> select * from vincentyuan.tw100;

NAME
-----------------------------------------------

1
1
1
1
1
1
1
2
3

9 rows selected.

SQL> truncate table vincentyuan.tw100;

Table truncated.

SQL>


2.使用AUL

先建立一個文字檔 test.cfg ,有system.dbf 與 要恢復 table 所在的dbf

0 0 D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
0 0 D:\ORACLE\ORADATA\ORCL\TEST1.DBF

開啟AUL6.EXE,並執行 test.cfg

並讀取表結構與用戶等相關資訊
輸入
UNLOAD TABLE USER$; 
UNLOAD TABLE OBJ$; 
UNLOAD TABLE TAB$; 
UNLOAD TABLE COL$; 

查看 table 的編號


掃描一下空間分配資訊,掃描結果會存在 AULEXT.TXT 裡


在Truncate table 時重置了第一個block,下一個block 就是原本的資料,所以我們這邊選擇下一個block (原本在130),要是在找不到可以試試下下個block,成功後可以找到原來的資料編號

解析出 Table 資料


 接下來把資料儲存在  Tw100.txt 裡


就可以發現AUL目錄下有 三個檔案 TW100_sqlldr.ctl、tw100.txt、TW100_syntax.sql
DBA就可以利用sqlldr 把資料匯進去

想當然的真實情況不可能這麼簡單,肯定比範例來得複雜與棘手,例如在 Truncate 後立刻被 insert 資料進去,找不到原來的資料編碼,這種情況下作者不保證AUL能100%完全恢復

好的DBA是建立完善的備份機制與策略,不能把AUL當作第一考慮使用的工具

















沒有留言:

張貼留言