一、適用背景情況說明
有個資料庫test,其資料在裝置test,日誌在裝置test_log;
test資料庫中有個表tab1,有5條記錄(1-5);
在此時進行了資料庫完整備份:dump database test to ‘/opt/data/test.dump’;
接著向tab1表中插入了5條記錄(6-10),此時的時間是:2009-4-29 17:30:09;
然後刪除了tab1表中的記錄1,此時tab1表還有9條記錄(2-10);
此時發現上一個步驟中的記錄1不應該刪除,屬於誤刪除操作,想要恢複回來,怎麼辦?!
二、進行恢複處理的前提條件
資料庫的資料和日誌必須是分開儲存在不同的裝置上
資料庫沒有進行過資料庫交易記錄的截斷操作;
有資料誤刪除之前的一個資料庫完整備份;
三、誤刪除資料的恢複處理步驟
1、備份現有資料庫test的交易記錄(注意不要在備份語句後面使用with no_truncate選項,否則無法按時間點從資料庫日誌中恢複資料):
dump transaction test to ‘/opt/data/test_tran.dump’
2、建立一個For Load的乾淨資料庫test1,其資料和日誌分別儲存在兩個不同的裝置上(也可以直接在現有資料庫test上進行恢複,不過推薦採用乾淨的資料庫進行資料恢複,確保現有test資料庫中資料的安全);
3、使用完整Database Backup檔案 /opt/data/test.dump,將其資料恢複到資料庫test1上:
load database test1 from ‘/opt/data/test.dump’
4、從資料庫交易記錄備份檔案 /opt/data/test_tran.dump 中恢複到資料刪除之前的那一刻狀態:
load transaction test1 from ‘/opt/data/test_tran.dump’ with until_time=’2009-4-29 17:30:09’
(這裡until_time推薦使用與資料庫日期格式一致的格式,例如:Apr 29 2009 17:30:09+毫秒+PM)