Oracle數據庫利用日誌挖掘來恢復誤刪除的數據

原文出處:http://database.51cto.com/art/201108/280035.htmsql


本文主要介紹了利用日誌挖掘Oracle不徹底恢復來恢復誤刪除的表、數據和視圖的方法,但願可以對您有所幫助。數據庫

AD:51CTO 網+ 第十二期沙龍:大話數據之美_如何用數據驅動用戶體驗oracle


數據庫操做中,當咱們誤刪除了表、數據或者是視圖等,能夠利用日誌挖掘Oracle不徹底恢復進行恢復,本文主要就介紹了利用日誌挖掘Oracle不徹底恢復來恢復數據的方法,接下來咱們就開始介紹這一過程。ide

實施該方法須要知足兩個條件:1. DB工做在歸檔模式下;  2. 有冷準備份的數據文件。spa

接下來咱們介紹恢復過程,格式以下:日誌

col script for a80     col SQL_REDO for a80


-- 拼接從哪裏挖的語句orm


select 'exec dbms_logmnr.add_logfile('''||member||''')' as script from v$logfile;


-- 從哪裏挖  htm


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');


-- 開始挖   blog


exec dbms_logmnr.start_logmnr;


-- 找結果 --> 要恢復的語句時的時間戳;   ip


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 -->要恢復的時間戳


-- 關掉DB   

shutdown abort


-- 拷貝冷備的文件 -- *.dbf 到數據文件目錄下,並進行覆蓋;由於要利用日誌把 sys,user等表空間的數據,重作一次;   

[oracle@OracleWeblogic orcl_new_bk]$ cp *.dbf ../orcl_new/

-- 啓動到 mount 下


startup mount


-- 恢復到 1037333 drop table scott.emp purge  的時間點;   

-- 要求:trc   


recover database until change 1035742;


-- 啓動DB in resetlogs; 


alter database open resetlogs;


原理:

1.冷備份的數據文件 *.dbf比如今要舊,那麼數據文件的scn確定就比如今的小;  

2.使用日誌挖掘方法,在日誌中找出刪表時的scn;  

3.在數據庫shutdown 的狀態下,用冷備份的數據文件 *.dbf,覆蓋如今的*.dbf文件;-- 保證數據文件完整性   

4.啓動DB到 mount 下, 恢復到日誌挖掘的時間點(利用日誌對數據文件重作一次)  

5.以 resetlog 方式 open --- 之前的日誌就覆蓋了;   

PS:

數據庫有四種狀態shutdown、nomount、mount、open。

shutdown是指關閉狀態。

nomount是指根參數文件已經構造出實例的狀態。

mount是指爲實例打開控制文件,並讀出控制文件中相關信息,但並不驗證。

open是指對相關文件進行驗證,如沒有問題,就打開,讓用戶能夠訪問。

關於利用日誌挖掘Oracle不徹底恢復恢復誤刪除的表/數據/視圖等的操做就介紹到這裏了,但願可以帶給您一些收穫吧!


原文出處:http://database.51cto.com/art/201108/280035.htm

相關文章
相關標籤/搜索