天天看點

「北亞資料恢複」oracle資料庫執行truncate table怎麼恢複資料?

作者:北亞資料恢複中心

誤操作導緻資料庫資料丢失是最常見的資料庫故障。如果有最新備份的情況下,誤删除資料後恢複備份資料即可。當然也會有特殊狀況如:資料庫備份無法使用、還原報錯等。北亞資料恢複工程師為大家介紹的是一例oracle資料庫誤truncate table 後的資料庫恢複案例。如果您碰到誤操作導緻資料丢失,備份又恰好無法使用的情況可以參考這個資料恢複方案。

Truncate工作原理:

正常情況下oracle會通過Segment Header及資料字典對表的Data Object ID進行更新,具體到存儲資料部分的塊實際上并未被修改。在oracle服務再進行全表資料讀取時,由于資料字典和Data Object ID與實際存儲的資料塊内容不一緻,而不會讀取到被truncate的内容記錄,這也就是資料庫恢複資料的關鍵。

資料庫資料恢複過程:

在本案例示範中,北亞資料恢複工程師構造了一個故障。

1、構造故障的軟硬體裝置如下:

Os:windows server;

資料庫版本:最新版本的64位的win_oracle。

2、Scott使用者建立表emp1,複制emp表,連續複制多次,總記錄數為:7340032條。随後truncate表emp1。此時查詢該表,資料庫中該表的記錄為0條。見下圖:

「北亞資料恢複」oracle資料庫執行truncate table怎麼恢複資料?

北亞資料恢複——truncate table後如何恢複資料

3、北亞資料恢複工程師打開資料庫檔案的底層資料,對system表空間檔案進行分析,找到truncate表的原始資料所在的位置,見下圖:

「北亞資料恢複」oracle資料庫執行truncate table怎麼恢複資料?

4、解析表所在的資料檔案資料庫,找到truncate的資料;

5、将truncate的資料庫插入到資料庫中。

資料恢複結果 :

通過解析system01.dbf檔案,北亞資料恢複工程師找到truncate的資料所在的位置,找到被删除的資料。解析表所在的資料檔案,将truncate的資料插入到資料庫中。

在資料庫中,查找被truncate,發現資料回來了,直接備份資料。見下圖:

「北亞資料恢複」oracle資料庫執行truncate table怎麼恢複資料?

Exp導出scott使用者;見下圖:

「北亞資料恢複」oracle資料庫執行truncate table怎麼恢複資料?