當表被truncate後,需要馬上恢復。首先要做的就是關閉資料庫所有應用,或者OFFLINE那個表所在的表空間。目的只有一個,確保空間不會被重用資料不會被覆蓋。只要原來的空間沒有被重用(即資料被覆蓋),則資料都是可以恢復的。辦法大概有這麼幾種:
一、使用Flashback Database功能找回被TRUNCATE表:
使用該方式首先需要資料庫處在歸檔模式下,並且開啟Flashback和force_logging功能;
其侷限性在於這種方式實際是恢復資料庫到一定時間點,恢復資料庫過程需要資料庫重啟。
二、利用Oracle表掃描機制恢復被Truncate的資料:
提供了一個使用PLSQL編寫的儲存過程包來恢復被TRUNCATE的資料。
其原理基於TRUNCATE不會逐個清除使用者資料塊上的資料,而僅僅重置資料字典和元資料塊上的元資料(如儲存段頭和擴充套件段圖)。也就是說,此時,其基本資料並未被破壞,而是被系統回收、等待被重新分配————因此,要恢復被TRUNCATE的資料,需要及時備份其所在的資料檔案。
三、使用Oracle資料恢復工具-ODU恢復被Truncate的資料:
ODU是比較好用且功能強大的資料恢復工具,它也是透過直接掃描資料檔案來獲取誤刪的資料,遺憾的是現在已經商用了,正式版需要license,有需要的公司或個人可購買
當表被truncate後,需要馬上恢復。首先要做的就是關閉資料庫所有應用,或者OFFLINE那個表所在的表空間。目的只有一個,確保空間不會被重用資料不會被覆蓋。只要原來的空間沒有被重用(即資料被覆蓋),則資料都是可以恢復的。辦法大概有這麼幾種:
一、使用Flashback Database功能找回被TRUNCATE表:
使用該方式首先需要資料庫處在歸檔模式下,並且開啟Flashback和force_logging功能;
其侷限性在於這種方式實際是恢復資料庫到一定時間點,恢復資料庫過程需要資料庫重啟。
二、利用Oracle表掃描機制恢復被Truncate的資料:
提供了一個使用PLSQL編寫的儲存過程包來恢復被TRUNCATE的資料。
其原理基於TRUNCATE不會逐個清除使用者資料塊上的資料,而僅僅重置資料字典和元資料塊上的元資料(如儲存段頭和擴充套件段圖)。也就是說,此時,其基本資料並未被破壞,而是被系統回收、等待被重新分配————因此,要恢復被TRUNCATE的資料,需要及時備份其所在的資料檔案。
三、使用Oracle資料恢復工具-ODU恢復被Truncate的資料:
ODU是比較好用且功能強大的資料恢復工具,它也是透過直接掃描資料檔案來獲取誤刪的資料,遺憾的是現在已經商用了,正式版需要license,有需要的公司或個人可購買