Oracle數(shù)據(jù)庫(kù)利用日志挖掘來(lái)恢復(fù)誤刪除的數(shù)據(jù)
在數(shù)據(jù)庫(kù)操作中,當(dāng)我們誤刪除了表、數(shù)據(jù)或者是視圖等,可以利用日志挖掘Oracle不完全恢復(fù)進(jìn)行恢復(fù),本文主要就介紹了利用日志挖掘Oracle不完全恢復(fù)來(lái)恢復(fù)數(shù)據(jù)的方法,接下來(lái)我們就開始介紹這一過程。
實(shí)施該方法需要滿足兩個(gè)條件:1. DB工作在歸檔模式下; 2. 有冷準(zhǔn)備份的數(shù)據(jù)文件。
接下來(lái)我們介紹恢復(fù)過程,格式如下:
- col script for a80
- col SQL_REDO for a80
-- 拼接從哪里挖的語(yǔ)句
- select 'exec dbms_logmnr.add_logfile('''||member||''')' as script from v$logfile;
-- 從哪里挖
- exec dbms_logmnr.add_logfile('/oracle/oradata/orcl_new/redo03.log');
- exec dbms_logmnr.add_logfile('/oracle/oradata/orcl_new/redo02.log');
- exec dbms_logmnr.add_logfile('/oracle/oradata/orcl_new/redo01.log');
-- 開始挖
- exec dbms_logmnr.start_logmnr;
-- 找結(jié)果 --> 要恢復(fù)的語(yǔ)句時(shí)的時(shí)間戳;
- select scn, sql_redo from v$logmnr_contents where sql_redo like 'drop table emp%';
- SCN SQL_REDO
- ---------- --------------------------------------------------------------------------------
- 1036547 drop table t1 purge;
- 1037333 drop table scott.emp purge;
- -- 1037333 -->要恢復(fù)的時(shí)間戳
-- 關(guān)掉DB
- shutdown abort
-- 拷貝冷備的文件 -- *.dbf 到數(shù)據(jù)文件目錄下,并進(jìn)行覆蓋;因?yàn)橐萌罩景?nbsp;sys,user等表空間的數(shù)據(jù),重做一次;
- [oracle@OracleWeblogic orcl_new_bk]$ cp *.dbf ../orcl_new/
-- 啟動(dòng)到 mount 下
- startup mount
-- 恢復(fù)到 1037333 drop table scott.emp purge 的時(shí)間點(diǎn);
-- 要求:trc
- recover database until change 1035742;
-- 啟動(dòng)DB in resetlogs;
- alter database open resetlogs;
原理:
1.冷備份的數(shù)據(jù)文件 *.dbf比現(xiàn)在要舊,那么數(shù)據(jù)文件的scn肯定就比現(xiàn)在的?。?nbsp;
2.使用日志挖掘方法,在日志中找出刪表時(shí)的scn;
3.在數(shù)據(jù)庫(kù)shutdown 的狀態(tài)下,用冷備份的數(shù)據(jù)文件 *.dbf,覆蓋現(xiàn)在的*.dbf文件;-- 保證數(shù)據(jù)文件完整性
4.啟動(dòng)DB到 mount 下, 恢復(fù)到日志挖掘的時(shí)間點(diǎn)(利用日志對(duì)數(shù)據(jù)文件重做一次)
5.以 resetlog 方式 open --- 以前的日志就覆蓋了;
PS:
數(shù)據(jù)庫(kù)有四種狀態(tài)shutdown、nomount、mount、open。
shutdown是指關(guān)閉狀態(tài)。
nomount是指根參數(shù)文件已經(jīng)構(gòu)造出實(shí)例的狀態(tài)。
mount是指為實(shí)例打開控制文件,并讀出控制文件中相關(guān)信息,但并不驗(yàn)證。
open是指對(duì)相關(guān)文件進(jìn)行驗(yàn)證,如沒有問題,就打開,讓用戶可以訪問。
關(guān)于利用日志挖掘Oracle不完全恢復(fù)恢復(fù)誤刪除的表/數(shù)據(jù)/視圖等的操作就介紹到這里了,希望能夠帶給您一些收獲吧!
【編輯推薦】






