1. 程式人生 > >使用ODU恢復oracle被truncate的表資料

使用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.DBF

4。恢復方法

 對於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