AUL(MyDUL) Oracle及Oracle ASM數據恢複,原本是想下Windows版本的,這linux 版本的留著備用吧
最近重做係統,忘記備份oracle中的數據,好在我的數據庫文件存放目錄不在係統盤,找到數據庫文件存放目錄,發現一堆dbf文件,現在要從這1G+的文件中恢複我珍貴的兩張表的數據。dbf數據文件如下圖:
(1)下載aul工具,官網:http://www.mydul.net/,右側有下載鏈接,我使用的是AUL6 for Windows,工具體積不大,zip包1.6M,一個exe文件+一個dll。
(2)解壓aul6.zip,在aul6.exe同級目錄下建兩個文件,1.cfg和2.cfg,1.cfg中使用的兩個dbf是oracle係統的dbf,2.cfg中使用的dbf是新建數據庫中存放數據的dbf,其不含有表名/結構等信息,僅存放裸數據。
1.cfg:
0 0 F:\backup\orcl\SYSTEM01.DBF
0 0 F:\backup\orcl\UNDOTBS01.DBF
2.cfg:
0 0 F:\backup\orcl\DOTR.DBF
(3)運行aul6.exe,自動進入cmd命令行模式。
(4)輸入命令:open 1.cfg,回車,正常情況,係統會如下顯示:
依次輸入下列命令,每輸完一條命令,回車執行:
unloadtable user$;
unloadtable obj$;
unloadtable tab$;
unloadtable col$;
執行完畢後,aul6.exe同級目錄下會生產四個文件:aulusr.txt, aulobj.txt,aultab.txt, aulcol.txt,每個文件大小均不為0。
(5)打開aulusr.txt,查看以前數據表的用戶是否存在,正常結果是存在。若忘記以前數據表的用戶名,則打開aulobj.txt,找到你要恢複的數據表表名,該表名的左側的數字即用戶名編號,根據編號在aulusr.txt中找到用戶名。如:
Aulobj.txt:57356,62,ACCOUNT_MANAGE,,2,
Aulusr.txt:62,MINI,
待恢複數據表表名為ACCOUNT_MANAGE,用戶名為mini。
(6)執行命令:open 2.cfg,回車,正常情況,效果應與打開1.cfg時效果相同,輸出數據塊大小、數量等信息。
(7)執行命令:list table mini to mini.txt;回車,生成所有待導出數據表腳本,此處mini即數據表的用戶名。在aul6.exe同級目錄下找到mini.txt,正常情況該文件大小不為0,打開,找到待恢複的數據表,把其它記錄(大多為係統表)全部刪除,保存,將文件擴展名改為sql。如下圖:
(8)執行命令:@mini.sql; 執行完後,aul6.exe同級目錄下一個表會生成3個文件,如:
ACCOUNT_MANAGE.txt 數據文件
ACCOUNT_MANAGE_sqlldr.ctl 裝載控製文件
ACCOUNT_MANAGE_syntax.sql 創建表腳步
該三個文件大小均不為0,若僅txt文件大小為0,則說明2.cfg中dbf文件選取錯誤,修改為其它dbf文件,重新執行步驟6及以後步驟(我在此處卡了好久,開始用USERS01.dbf,txt大小為0,改為TEMP01.dbf,還是為0,改為DOTR.dbf,txt中終於有數據了)。此時,可以打開txt和sql文件,驗證是否是待恢複的數據。至此,數據已全部導出來了,下麵將其導入到當前數據庫中。
(9)打開plsql,連接一個數據庫,執行ACCOUNT_MANAGE_syntax.sql中腳本,可能會報“exit;為無效語句錯誤”,無需理會,待所有sql腳步執行完畢,查看plsql左側樹形結構中tables節點下是否生成待恢複的表。
(10)使用oracle自帶的sqlldr命令裝載文本數據,新開cmd窗口,將路徑切換到aul6.exe同級目錄下,執行命令:sqlldr system/admin control=ACCOUNT_MANAGE_sqlldr.ctl;回車,system/admin為你當前數據庫的用戶名/密碼,需與plsql登錄時用戶名/密碼相同。正常情況命令執行結束時會輸出邏輯記錄計數,表示插入了多少條記錄,且在aul6.exe同級目錄下生成日誌文件account_manage_sqlldr.log,包含執行結果的詳細信息。
(11)在plsql中驗證待恢複的數據表中數據是否已導入成功,若未成功,則重新操作。
(1)aul,又名mydul,oracle及oracle asm數據恢複工具,官網提供試用版,建議從官網下載,國內站點提供的資源中部分帶毒,差點害的我再次重做係統。
(2)dbf文件主要分類:
system01.dbf:記錄係統運行信息,包含所有數據庫字典,PL/SQL程序代碼及其他係統信息
undotbs01.dbf:存放回退信息,即DML操作後的舊數據信息
sysaux01.dbf:system文件的輔助文件,存放支持oracle係統活動的多種工具如logminer
users01.dbf:新建用戶未指定存儲空間是,默認數據存放在該文件中
example01.dbf:存放示例數據信息
(3)想恢複數據,步驟8很重要,該步驟中生成的txt文件,即是待恢複的裸數據文件,實際上,得到txt數據文件,數據恢複就基本結束了,後續操作不過是再現它的使用狀態(將其導入到數據庫中)。我在此處卡了好久,開始用USERS01.dbf,txt大小為0,改為TEMP01.dbf,還是為0,改為DOTR.dbf,txt中終於有數據了。在此必須要感謝一位兄長,抱著試一試的態度,我逐次將2.cfg中的dbf文件名替換為其它dbf,直至數據正確生成。試一試的態度 便是他教給我的。
(4)步驟9、10為導入數據方式,如果待恢複的數據表比較多,可以寫個腳本,以實現批量導入sql
76.4M / 03-25
立即下載55M / 06-05
立即下載237.9M / 04-13
立即下載140.5M / 03-06
立即下載900.9M / 03-02
立即下載96.2M / 07-06
立即下載311.2M / 07-06
立即下載335M / 07-06
立即下載200M / 07-06
立即下載413.8M / 07-06
立即下載353.9M / 06-05
立即下載131.8M / 04-13
立即下載230.8M / 03-03
立即下載195.6M / 03-03
立即下載165.4M / 03-03
立即下載45.6M / 09-08
立即下載665.2M / 07-06
立即下載2.84G / 07-06
立即下載93M / 07-06
立即下載338.3M / 07-06
立即下載1.38G / 07-26
立即下載488.3M / 07-16
立即下載109.8M / 06-03
立即下載142M / 01-08
立即下載1.2M / 11-23
立即下載548.8M / 04-13
立即下載1.6M / 04-13
立即下載1.48G / 03-18
立即下載646.6M / 03-03
立即下載133.7M / 03-03
立即下載325.8M / 06-07
立即下載60M / 04-29
立即下載254M / 04-25
立即下載659M / 04-23
立即下載1M / 12-26
立即下載253.4M / 12-08
立即下載253M / 12-08
立即下載1.19G / 11-16
立即下載110.5M / 04-23
立即下載26.7M / 03-16
立即下載488.3M / 07-16
立即下載248.9M / 12-08
立即下載248.9M / 12-08
立即下載201.2M / 04-13
立即下載100.6M / 03-06
立即下載148.9M / 03-06
立即下載1.12G / 07-06
立即下載1.25G / 07-06
立即下載9.48G / 07-06
立即下載50KB / 07-06
立即下載116.2M / 04-10
立即下載1.92G / 04-17
立即下載201.5M / 04-13
立即下載7.31G / 07-01
立即下載94.3M / 07-06
立即下載2.48G / 07-06
立即下載7.63G / 07-06
立即下載1M / 07-06
立即下載778.1M / 07-06
立即下載509.7M / 07-06
立即下載561.8M / 07-11
立即下載1.32G / 01-19
立即下載72M / 07-06
立即下載548.7M / 07-06
立即下載1.00G / 07-06
立即下載9.13G / 07-06
立即下載126.2M / 07-06
立即下載72M / 07-06
立即下載105.1M / 07-06
立即下載132M / 07-06
立即下載