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
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【北亞資料恢復】oracle資料庫執行truncate table命令怎麼恢復資料?資料恢復Oracle資料庫
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- [20180627]truncate table的另類恢復.txt
- [20180630]truncate table的另類恢復2.txt
- oracle truncate table recover(oracle 如何拯救誤操作truncate的表)Oracle
- 使用oracle的logminer同步資料Oracle
- 使用 Oracle logminer 挖掘日誌恢復誤刪資料以及查詢操作者Oracle
- 7_Oracle truncate異常恢復之plsql修復OracleSQL
- 6_Oracle truncate異常恢復之bbed修復Oracle
- oracle資料庫災難挽救應急方案之DDL誤操作恢復(truncate)Oracle資料庫
- Oracle恢復誤刪資料Oracle
- 【北亞資料恢復】異常斷電導致Oracle資料庫報錯的oracle資料恢復資料恢復Oracle資料庫
- MySQL資料災難挽救之truncate tableMySql
- 【北亞資料恢復】誤操作導致雲伺服器表被truncate,表內資料被delete的資料恢復資料恢復伺服器delete
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- 【資料庫資料恢復】Oracle ASM例項無法掛載的資料恢復案例資料庫資料恢復OracleASM
- 【資料庫資料恢復】ASM例項不能掛載的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【資料庫資料恢復】LINUX環境下ORACLE資料庫誤刪除的資料恢復資料庫資料恢復LinuxOracle
- Oracle資料庫恢復之resetlogsOracle資料庫
- 【資料庫資料恢復】ORACLE常見資料災難&資料恢復可能性資料庫資料恢復Oracle
- 【資料庫資料恢復】Oracle資料庫ASM磁碟組掉線如何恢復資料?資料庫資料恢復OracleASM
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- [Oracle]Oracle資料庫資料被修改或者刪除恢復資料Oracle資料庫
- 【資料庫資料恢復】HP-UX系統ORACLE資料庫被誤刪除的資料恢復資料庫資料恢復UXOracle
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- Oracle資料庫冷備和恢復Oracle資料庫
- Oracle & MySQL & PostgreSQL資料庫恢復支援OracleMySql資料庫
- oracle asm 資料塊重構恢復OracleASM
- [20181212]truncate的另類恢復5.txt
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 資料庫資料恢復-ORACLE資料庫的常見故障&各種故障下的資料恢復可能性資料庫資料恢復Oracle
- 恢復Oracle資料庫誤刪除資料的語句Oracle資料庫
- oracle drop table purge無備份bbed恢復(3/3)Oracle
- oracle drop table purge無備份bbed恢復(1/3)Oracle