oracle logminer恢復truncate table的資料
編寫背景:
近日除錯儲存過程,就未與同事商量先truncate了表,事後得知表中另一個部門插入的資料全沒了,為了想法找回資料,
特測試了logminer的用法
1,logminer可否用於恢復trucate table前的資料
2,truncate table沒有備份
3,oracle11g,非歸檔模式
近日除錯儲存過程,就未與同事商量先truncate了表,事後得知表中另一個部門插入的資料全沒了,為了想法找回資料,
特測試了logminer的用法
1,logminer可否用於恢復trucate table前的資料
2,truncate table沒有備份
3,oracle11g,非歸檔模式
測試紀要
--1,在scott使用者下建立測試表
create table t_truncate_before(a int);
insert into t_truncate_before values(1);
insert into t_truncate_before values(2);
commit;
select * from t_truncate_before;--查詢是有1,2兩條記錄
--2,查詢當前日誌,用於確定分析的日誌
select * from v$log;--3
select * from v$logfile;--D:\ORACLE\ORADATA\ORCL\REDO03.LOG
--1,在scott使用者下建立測試表
create table t_truncate_before(a int);
insert into t_truncate_before values(1);
insert into t_truncate_before values(2);
commit;
select * from t_truncate_before;--查詢是有1,2兩條記錄
--2,查詢當前日誌,用於確定分析的日誌
select * from v$log;--3
select * from v$logfile;--D:\ORACLE\ORADATA\ORCL\REDO03.LOG
--3,用logminer開始分析日誌
alter system set utl_file_dir='c:\logminer' scope=spfile;--配置用於儲存logminer的目錄,並重啟庫
shutdown immediate;
startup;
--4,開始分析
SQL> execute dbms_logmnr_d.build('logminer.ora','c:\logminer');
PL/SQL procedure successfully completed
SQL> execute dbms_logmnr.add_logfile('D:\ORACLE\ORADATA\ORCL\REDO01.LOG',dbms_logmnr.NEW);
PL/SQL procedure successfully completed
SQL> execute dbms_logmnr.add_logfile('D:\ORACLE\ORADATA\ORCL\REDO02.LOG',dbms_logmnr.ADDFILE);
PL/SQL procedure successfully completed
SQL> execute dbms_logmnr.add_logfile('D:\ORACLE\ORADATA\ORCL\REDO03.LOG',dbms_logmnr.ADDFILE);
PL/SQL procedure successfully completed
alter system set utl_file_dir='c:\logminer' scope=spfile;--配置用於儲存logminer的目錄,並重啟庫
shutdown immediate;
startup;
--4,開始分析
SQL> execute dbms_logmnr_d.build('logminer.ora','c:\logminer');
PL/SQL procedure successfully completed
SQL> execute dbms_logmnr.add_logfile('D:\ORACLE\ORADATA\ORCL\REDO01.LOG',dbms_logmnr.NEW);
PL/SQL procedure successfully completed
SQL> execute dbms_logmnr.add_logfile('D:\ORACLE\ORADATA\ORCL\REDO02.LOG',dbms_logmnr.ADDFILE);
PL/SQL procedure successfully completed
SQL> execute dbms_logmnr.add_logfile('D:\ORACLE\ORADATA\ORCL\REDO03.LOG',dbms_logmnr.ADDFILE);
PL/SQL procedure successfully completed
--5,執行分析
SQL> execute dbms_logmnr.start_logmnr(DictFileName => 'c:\logminer\logminer.ora');
PL/SQL procedure successfully completed
SQL> execute dbms_logmnr.start_logmnr(DictFileName => 'c:\logminer\logminer.ora');
PL/SQL procedure successfully completed
/*
SQL> execute dbms_logmnr.start_logmnr(0,100,to_date('2012-9-28 00:00:00','yyyy-mm-dd hh24:mi:ss'),to_date('2012-9-28 15:52:00','yyyy-mm-dd hh24:mi:ss'),'c:\logminer\logminer.ora');
begin dbms_logmnr.start_logmnr(0,100,to_date('2012-9-28 00:00:00','yyyy-mm-dd hh24:mi:ss'),to_date('2012-9-28 15:52:00','yyyy-mm-dd hh24:mi:ss'),'c:\logminer\logminer.ora'); end;
ORA-01291: 缺失日誌檔案
ORA-06512: 在 "SYS.DBMS_LOGMNR", line 58
ORA-06512: 在 line 2
*/
SQL> execute dbms_logmnr.start_logmnr(0,100,to_date('2012-9-28 00:00:00','yyyy-mm-dd hh24:mi:ss'),to_date('2012-9-28 15:52:00','yyyy-mm-dd hh24:mi:ss'),'c:\logminer\logminer.ora');
begin dbms_logmnr.start_logmnr(0,100,to_date('2012-9-28 00:00:00','yyyy-mm-dd hh24:mi:ss'),to_date('2012-9-28 15:52:00','yyyy-mm-dd hh24:mi:ss'),'c:\logminer\logminer.ora'); end;
ORA-01291: 缺失日誌檔案
ORA-06512: 在 "SYS.DBMS_LOGMNR", line 58
ORA-06512: 在 line 2
*/
--6,查詢分析結果
--在plsql developer中sql視窗與命令視窗不同,必須同一個視窗執行,如下檢視才會有結果
select * from v$logmnr_contents;-- ORA-01306: 在從 v$logmnr_contents 中選擇之前必須呼叫 dbms_logmnr.start_logmnr()
select * from v$logmnr_logfile
select * from v$logmnr_transaction
--在plsql developer中sql視窗與命令視窗不同,必須同一個視窗執行,如下檢視才會有結果
select * from v$logmnr_contents;-- ORA-01306: 在從 v$logmnr_contents 中選擇之前必須呼叫 dbms_logmnr.start_logmnr()
select * from v$logmnr_logfile
select * from v$logmnr_transaction
--7,小結
1,非歸檔也可恢復表的truncate之前資料
2,再次說明溝通的重要性,尤其對於多部門協作的專案
3,除錯儲存過程前一定要備份表或預先與相關人員溝通,減少誤操作
1,非歸檔也可恢復表的truncate之前資料
2,再次說明溝通的重要性,尤其對於多部門協作的專案
3,除錯儲存過程前一定要備份表或預先與相關人員溝通,減少誤操作
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-745386/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中truncate table後的資料恢復(Oracle資料恢復工具-ODU)Oracle資料恢復
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【北亞資料恢復】oracle資料庫執行truncate table命令怎麼恢復資料?資料恢復Oracle資料庫
- truncate table 誤刪除資料後的恢復
- 恢復被執行truncate table的表資料
- 一次truncate table 後的資料恢復[轉帖]資料恢復
- TRUNCATE資料恢復資料恢復
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 使用ODU恢復oracle被truncate的表資料Oracle
- Oracle9i使用logminer恢復資料Oracle
- Oracle Truncate表恢復(ODU)Oracle
- 使用ODU恢復被truncate表的資料
- 使用hellodba的工具恢復truncate表的資料
- logminer恢復誤覆蓋更新的資料
- oracle truncate table recover(oracle 如何拯救誤操作truncate的表)Oracle
- oracle恢復表delete/truncate/drop的方法總結Oracledelete
- ORACLE資料恢復Oracle資料恢復
- 6_Oracle truncate異常恢復之bbed修復Oracle
- 7_Oracle truncate異常恢復之plsql修復OracleSQL
- oracle資料庫災難挽救應急方案之DDL誤操作恢復(truncate)Oracle資料庫
- 循序漸進oracle第8章:Oracle的閃回特性之恢復truncate刪除表的資料Oracle
- logminer來恢復在表DDL之前被刪除的資料
- ORACLE-資料恢復Oracle資料恢復
- 【北亞資料恢復】誤操作導致雲伺服器表被truncate,表內資料被delete的資料恢復資料恢復伺服器delete
- MySQL資料災難挽救之truncate tableMySql
- 使用 Oracle logminer 挖掘日誌恢復誤刪資料以及查詢操作者Oracle
- Oracle12c多租戶資料庫備份與恢復 - 線上單獨恢復table 2Oracle資料庫
- Oracle12c多租戶資料庫備份與恢復 - 線上單獨恢復table 1Oracle資料庫
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- Oracle恢復誤刪資料Oracle
- Oracle資料恢復專題Oracle資料恢復
- oracle資料恢復還原Oracle資料恢復
- 【北亞資料恢復】異常斷電導致Oracle資料庫報錯的oracle資料恢復資料恢復Oracle資料庫
- 恢復資料,資料塊恢復
- Oracle資料庫Redo故障的恢復Oracle資料庫
- Oracle資料庫的非常規恢復Oracle資料庫