利用日志挖掘 Oracle 不完全恢復(fù) 恢復(fù)誤刪除的表/數(shù)據(jù)/視圖等
1./* --------------------------
2.前題:
3. 1. DB工作在歸檔模式下;
4. 2. 有冷準(zhǔn)備份的數(shù)據(jù)文件;
5.---------------------------*/
1.col script for a80
2.col SQL_REDO for a80 3.
4.-- 拼接從哪里挖的語句 5.select 'exec dbms_logmnr.add_logfile('''||member||''')' as script from v$logfile; 6.
7.-- 從哪里挖 8.exec dbms_logmnr.add_logfile('/Oracle/oradata/orcl_new/redo03.log'); 9.exec dbms_logmnr.add_logfile('/Oracle/oradata/orcl_new/redo02.log'); 10.exec dbms_logmnr.add_logfile('/Oracle/oradata/orcl_new/redo01.log'); 11.
12.
13.-- 開始挖 14.exec dbms_logmnr.start_logmnr; 15.
16.-- 找結(jié)果 --> 要恢復(fù)的語句時的時間戳; 17.select scn, sql_redo from v$logmnr_contents where sql_redo like 'drop table emp%'; 18.
19. SCN SQL_REDO
20.---------- -------------------------------------------------------------------------------- 21. 1036547 drop table t1 purge; 22. 1037333 drop table scott.emp purge; 23.-- 1037333 -->要恢復(fù)的時間戳 24.
25.-- 關(guān)掉DB 26.shutdown abort
27.
28.-- 拷貝冷備的文件 -- *.dbf 到數(shù)據(jù)文件目錄下,并進行覆蓋;,因為要利用日志把 sys,user等表空間的數(shù)據(jù),重做一次; 29.[Oracle@OracleWeblogic orcl_new_bk]$ cp *.dbf ../orcl_new/
30.
31.-- 啟動到 mount 下; 32.startup mount
33.
34.-- 恢復(fù)到 1037333 drop table scott.emp purge 的時間點; 35.-- 要求:trc 36.recover database until change 1035742; 37.
38.-- 啟動DB in resetlogs; 39.alter database open resetlogs; 40.
41.
42.原理
43.1.冷備份的數(shù)據(jù)文件 *.dbf比現(xiàn)在要舊,那么數(shù)據(jù)文件的scn肯定就比現(xiàn)在的;
44.2.使用日志挖掘方法,在日志中找出刪表時的scn;
45.3.在數(shù)據(jù)庫shutdown 的狀態(tài)下,用冷備份的數(shù)據(jù)文件 *.dbf,覆蓋現(xiàn)在的*.dbf文件;-- 保證數(shù)據(jù)文件完整性 46.4.啟動DB到 mount 下, 恢復(fù)到日志挖掘的時間點(利用日志對數(shù)據(jù)文件重做一次)
47.5.以 resetlog 方式 open --- 以前的日志就覆蓋了; 48.
49.PS:數(shù)據(jù)庫有四種狀態(tài)shutdown、nomount、mount、open 50.shutdown是指關(guān)閉狀態(tài)
51.nomount是指根參數(shù)文件已經(jīng)構(gòu)造出實例的狀態(tài)
52.mount是指為實例打開控制文件,并讀出控制文件中相關(guān)信息,但并不驗證
53.open是指對相關(guān)文件進行驗證,如沒有問題,就打開,讓用戶可以訪問
本文出自:億恩科技【1tcdy.com】
服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|