利用日誌挖掘 oracle 不完全恢復 恢復誤刪除的表/資料/檢視等
--------------------------
前提:
1. 資料庫工作在歸檔模式下;
2. 有冷備份的資料檔案;
---------------------------
前提:
1. 資料庫工作在歸檔模式下;
2. 有冷備份的資料檔案;
---------------------------
SQL>col script. for a80
SQL>col SQL_REDO for a80
-- 拼接從哪裡挖的語句
SQL>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');
-- 開始挖
SQL>exec dbms_logmnr.start_logmnr;
-- 找結果 --> 要恢復的語句時的時間戳;
SQL>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
SQL>shutdown abort
-- 複製冷備的檔案 -- *.dbf 到資料檔案目錄下,並進行覆蓋;,因為要利用日誌把 sys,user等表空間的資料,重做一次;
[oracle@Oracle]$ cp *.dbf ../orcl_new/
-- 啟動到 mount 下;
SQL>startup mount
-- 恢復到 1037333 drop table scott.emp purge 的時間點;
-- 要求:trc
SQL>recover database until scn 1035742;
-- 啟動DB in resetlogs;
SQL>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 是指對相關檔案進行驗證,如沒有問題,就開啟,讓使用者可以訪問
-- 關掉DB
SQL>shutdown abort
-- 複製冷備的檔案 -- *.dbf 到資料檔案目錄下,並進行覆蓋;,因為要利用日誌把 sys,user等表空間的資料,重做一次;
[oracle@Oracle]$ cp *.dbf ../orcl_new/
-- 啟動到 mount 下;
SQL>startup mount
-- 恢復到 1037333 drop table scott.emp purge 的時間點;
-- 要求:trc
SQL>recover database until scn 1035742;
-- 啟動DB in resetlogs;
SQL>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 是指對相關檔案進行驗證,如沒有問題,就開啟,讓使用者可以訪問
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25373498/viewspace-752522/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- (個人)利用日誌挖掘恢復誤操作
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- oracle恢復誤刪除資料Oracle
- mysql 誤刪除表內資料,透過binlog日誌恢復MySql
- oracle redo 日誌刪除後的恢復Oracle Redo
- 備份與恢復系列 六 日誌挖掘(Log Miner)找到誤刪除表的SCN
- Oracle閃回刪除恢復誤刪資料Oracle
- Oracle恢復誤刪除的資料檔案Oracle
- Oracle恢復誤刪資料Oracle
- 使用 Oracle logminer 挖掘日誌恢復誤刪資料以及查詢操作者Oracle
- Oracle資料恢復 - Linux / Unix 誤刪除的檔案恢復(轉)Oracle資料恢復Linux
- MySQL資料庫表誤刪除恢復(一)MySql資料庫
- 動手為王——利用logminer挖掘日誌恢復誤操作
- Sybase ASE資料庫恢復,Sybase資料恢復,資料誤刪除恢復工具READSYBDEVICE資料庫資料恢復dev
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- 恢復Oracle資料庫誤刪除資料的語句Oracle資料庫
- oracle日誌錯誤恢復(轉)Oracle
- SQL Server資料庫恢復,SQL Server資料恢復,SQL Server資料誤刪除恢復工具SQLRescueSQLServer資料庫資料恢復
- 【資料庫資料恢復】LINUX環境下ORACLE資料庫誤刪除的資料恢復資料庫資料恢復LinuxOracle
- 利用binlog日誌恢復mysql資料MySql
- DB2 恢復誤刪除的表DB2
- Oracle恢復誤操作刪除掉的表Oracle
- Flashback Query恢復誤刪除資料(轉)
- 【EM】資料表誤刪除故障模擬及恢復
- truncate table 誤刪除資料後的恢復
- lsof恢復oracle誤刪除檔案Oracle
- Sybase SQL Anywhere(ASA)資料庫恢復,ASA資料恢復,資料誤刪除恢復工具ReadASADBSQL資料庫資料恢復
- 【資料庫資料恢復】HP-UX系統ORACLE資料庫被誤刪除的資料恢復資料庫資料恢復UXOracle
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- 【儲存資料恢復】HP EVA儲存誤刪除VDISK的資料恢復案例資料恢復
- 【儲存資料恢復】NetApp儲存誤刪除的資料恢復案例資料恢復APP
- 【伺服器資料恢復】LINUX誤刪除、格式化的資料恢復伺服器資料恢復Linux
- 【伺服器資料恢復】EMC Unity儲存誤刪除的資料恢復案例伺服器資料恢復Unity
- 【儲存資料恢復案例】Netapp誤操作刪除lun的資料恢復資料恢復APP
- 利用rman全備恢復刪除的資料庫資料庫
- mysql誤刪資料恢復MySql資料恢復
- 【伺服器資料恢復】伺服器誤刪除lun如何恢復資料?伺服器資料恢復
- flashback database 恢復誤刪除的表空間。Database