使用ODU恢復oracle被truncate的表資料
1。ODU 介紹
ODU全稱為Oracle Database Unloader,是類似於Oracle的DUL的軟體,用於直接從Oracle資料庫的資料檔案中獲取表資料。在各種原因造成的資料庫不能開啟時,用於搶救資料,最大限度地減少資料丟失。
支援的Oracle資料庫版本包括8i,9i,10g,11g
今天是在ORACLE11G下測試完成了通過ODU對TRUNCATE的表資料如何進行恢復;
2。ODU 版本及下載
3。使用及配置
下載到ODU的Windows版本,是一個ZIP壓縮檔案,解壓縮到一個目錄,有如下的檔案和目錄:
config.txt檔案是ODU的配置檔案,我們不需要理會;
control.txt檔案是ODU的資料檔案資訊檔案。你可以理解為類似於Oracle資料庫的控制檔案,存放了ODU匯出資料時需要的Oracle資料檔案資訊。這個檔案需要我們自己配置(手工把資料檔案塊等資訊加入這個配置檔案,以便ODU進行讀取)
control.txt檔案中的資料格式為:
表空間號 檔案號 相對檔案號 檔名 塊大小
通過V$DATAFILE 找到相應的資訊,加入配置檔案,只需要前4列就好了。
我的配置檔案如下,這裡的格式怎麼樣都沒關係。
#ts #fno #rfno filename
0 1 1 D:/APP/ADMINISTRATOR/ORADATA/ZFTANG/SYSTEM01.DBF
1 2 2 D:/APP/ADMINISTRATOR/ORADATA/ZFTANG/SYSAUX01.DBF
2 3 3 D:/APP/ADMINISTRATOR/ORADATA/ZFTANG/UNDOTBS01.DBF
4 4 4 D:/APP/ADMINISTRATOR/ORADATA/ZFTANG/USERS01.DBF
6 5 5 D:/APP/ADMINISTRATOR/ORADATA/ZFTANG/EXAMPLE01.DBF
7 6 6 D:/APP/ADMINISTRATOR/ORADATA/ZFTANG/USERS02.DBF
8 7 7 D:/APP/ADMINISTRATOR/ORADATA/ZFTANG/USERS03.DBF4。恢復方法
對於ODU來說, 3.0.7版本及以後,恢復方法比較簡單,具體操作如下:下面以TEST_01表進行測試:
檢查TEST_01表資料,
然後對於表進行TRUNCATE 操作,truncate table test_01.此時資料已經被清空,我們需要進行恢復/
a):把TEST_01表所在的表空間進行OFFLINE操作:alter tablespace USERS offline;
b):啟動ODU,啟動介面如圖所示,進行讀取配置:
c):輸入:unload dict;進行掃描,結果如下圖:
d):scan extent ,根據資料檔案塊多少等,時間稍微有點長,結果如下
e):通過自動恢復,進行恢復表資料:unload table username.tablename object auto
f):設定表空間ONLINE ALTER TABLESPACE USERS ONLINE;
結束。。
備註:還可以資料不進行恢復,只把資料匯出來,
只需要執行命令:
ODU> unload table zftang.test_01
Unloading table: T1,object ID: 31388
Unloading segment,storage(Obj#=31388 DataObj#=31388 TS#=11 File#=10 Block#=1465 Cluster=0)
執行完此命令後,會在data目錄下生成三個檔案:
ZFTANG_TEST_01.ctl是用於sqlldr裝入資料所需要的控制檔案,ZFTANG_TEST_01.sql是建表SQL指令碼,ZFTANG_TEST_01.txt是匯出的資料。
我們可以用sql檔案建表,然後使用sqlldr裝入資料。
--EOF