使用logmnr,在RMAN備份檔案中恢復備份的歸檔日誌檔案進行分析
業務系統出問題了,發現時已經過了一段時間,v$sql和閃回區都已經查詢不到當時的sql了,也沒開審計,只能用logmnr做日誌抽取,肯定需要通過歸檔日誌,檢查了v$archived_log,發現有些歸檔日誌因為已經過了儲存時間,同時因為每天都有RMAN備份,這部分歸檔檔案已經被清除。為了能還原歸檔日誌,需要先在rman備份中恢復備份的歸檔日誌檔案。
因為歸檔已經清除,在用DBMS_Logmnr分析備份的歸檔檔案時報錯。
SQL> exec dbms_logmnr.add_logfile('/db2_arch/1_18620_770040269.dbf',DBMS_LOGMNR.NEW);
BEGIN dbms_logmnr.add_logfile('/db2_arch/1_18620_770040269.dbf',DBMS_LOGMNR.NEW); END;*
ERROR at line 1:
ORA-01284: file /db2_arch/1_18620_770040269 cannot be opened
ORA-00317: file type 0 in header is not log file
ORA-00334: archived log: /db2_arch/1_18620_770040269
ORA-06512: at "SYS.DBMS_LOGMNR", line 68
ORA-06512: at line 1
Logmnr是無法識別備份檔案的,只能先把歸檔檔案從備份檔案中還原出來才行。用RMAN搞定:
RMAN> run
{
SET ARCHIVELOG DESTINATION TO '/db2_arch';
restore archivelog sequence between 18620 and 18623;
}
executing command: SET ARCHIVELOG DESTINATION
using target database control file instead of recovery catalogStarting restore at 06-SEP-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=122 instance=orcl1 devtype=DISKchannel ORA_DISK_1: starting archive log restore to user-specified destination
archive log destination=/db2_arch
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=18620
channel ORA_DISK_1: reading from backup piece /db1_dbbk/RMAN/backup_20130905_56431_1.arc
channel ORA_DISK_1: restored backup piece 1
piece handle=/db1_dbbk/RMAN/backup_20130905_56431_1.arc tag=ORCL1_2
channel ORA_DISK_1: restore complete, elapsed time: 00:00:47
channel ORA_DISK_1: starting archive log restore to user-specified destination
archive log destination=/db2_arch
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=18621
channel ORA_DISK_1: reading from backup piece /db1_dbbk/RMAN/backup_20130905_56432_1.arc
channel ORA_DISK_1: restored backup piece 1
piece handle=/db1_dbbk/RMAN/backup_20130905_56432_1.arc tag=ORCL1_2
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting archive log restore to user-specified destination
archive log destination=/db2_arch
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=18622
channel ORA_DISK_1: reading from backup piece /db1_dbbk/RMAN/backup_20130905_56433_1.arc
channel ORA_DISK_1: restored backup piece 1
piece handle=/db1_dbbk/RMAN/backup_20130905_56433_1.arc tag=ORCL1_2
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting archive log restore to user-specified destination
archive log destination=/db2_arch
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=18623
channel ORA_DISK_1: reading from backup piece /db1_dbbk/RMAN/backup_20130905_56434_1.arc
channel ORA_DISK_1: restored backup piece 1
piece handle=/db1_dbbk/RMAN/backup_20130905_56434_1.arc tag=ORCL1_2
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
Finished restore at 06-SEP-13
這樣就在目錄/db2_arch裡還原了18620 到 18623 序號的歸檔檔案。接著就可以用DBMS_Logmnr分析日誌了。
exec dbms_logmnr.add_logfile('/db2_arch/1_18620_770040269.dbf',DBMS_LOGMNR.NEW);
exec dbms_logmnr.add_logfile('/db2_arch/1_18621_770040269.dbf',DBMS_LOGMNR.addfile);
exec dbms_logmnr.add_logfile('/db2_arch/1_18622_770040269.dbf',DBMS_LOGMNR.addfile);
或
begin
sys.dbms_logmnr.add_logfile(LogFileName => '/u01/oracle/logminer/1_18621_770040269.dbf',
Options => dbms_logmnr.new);
dbms_logmnr.add_logfile(LogFileName => '/u01/oracle/logminer/1_18622_770040269.dbf',
Options => dbms_logmnr.addfile);
dbms_logmnr.add_logfile(LogFileName => '/u01/oracle/logminer/1_18623_770040269.dbf',
Options => dbms_logmnr.addfile);
end;
之後開始分析:
begin
sys.dbms_logmnr.start_logmnr(DictFileName =>'/u01/oracle/logminer/landcenterlogmine.ora');
end;
分析指定時間:
begin
sys.dbms_logmnr.start_logmnr (
DictFileName =>'/u01/oracle/logminer/landcenterlogmine.ora',
startTime => to_date('2013-09-04 16:40:00','YYYY-MM-DD HH24:MI:SS'),
endTime => to_date('2013-09-04 17:00:00','YYYY-MM-DD HH24:MI:SS')
);
end;
檢視結果:
select * from v$logmnr_contents;
停止logmnr
exec sys.dbms_logmnr.end_logmnr
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14184018/viewspace-772309/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- rman全庫備份備份歸檔日誌檔案
- Oracle使用備份檔案集恢復歸檔日誌Oracle
- 備份歸檔日誌檔案
- RMAN備份資料檔案+控制檔案+歸檔日誌
- 【備份恢復】恢復 丟失已歸檔重做日誌檔案
- Oracle RMAN 不完全恢復(只有資料檔案備份,丟失歸檔日誌備份)Oracle
- RMAN備份與恢復(新舊控制檔案及歸檔日誌)測試
- RMAN備份及恢復歸檔日誌的語法
- 不完全恢復(資料檔案備份--新建表空間--控制檔案備份--日誌歸檔檔案)
- 冷備份+歸檔日誌的恢復
- 備份與恢復--從備份的歸檔日誌中恢復資料
- RMAN備份與恢復(新舊控制檔案及歸檔日誌)測試(敘)
- 12 使用RMAN備份和恢復檔案
- RMAN說,我能備份(5)--RMAN備份歸檔檔案
- RMAN備份歸檔日誌多份 %c
- 沒備份,歸檔日誌存在,丟失資料檔案的恢復
- 使用冷備份與冷備份後的資料庫歸檔日誌檔案進行資料庫不完整恢復資料庫
- rman恢復--歸檔模式有備份,丟失資料檔案的恢復模式
- rman恢復--歸檔模式無備份,丟失資料檔案的恢復模式
- RMAN備份恢復之歸檔日誌對BLOCKRECOVER的影響BloC
- RMAN備份歸檔日誌指令碼指令碼
- rman備份-(1) 利用備份級恢復資料檔案和控制檔案
- 備份歸檔日誌
- 【備份恢復】歸檔模式下丟失系統關鍵資料檔案 利用RMAN備份恢復模式
- 第5章:從開啟的資料庫備份與恢復之備份歸檔日誌檔案資料庫
- rman備份丟失控制檔案恢復
- 無檔案備份、擁有所有歸檔的恢復
- 【備份恢復】恢復inactive狀態的日誌檔案
- RMAN備份恢復之控制檔案的恢復(三)
- RMAN備份恢復之控制檔案的恢復(二)
- RMAN備份恢復之控制檔案的恢復(一)
- 【實驗】從RMAN備份中恢復spfile檔案
- 備份之歸檔重做日誌備份
- 【備份恢復】所有控制檔案丟失後 利用trace中的控制檔案備份執行恢復
- 在rman中如果有增量備份的話恢復時系統不會找歸檔日誌進行恢復
- 歸檔日誌大小 與使用rman 備份後的歸檔日誌產生的備份集大小的關係
- 備份與恢復--利用備份的控制檔案恢復
- 【備份恢復】丟失所有控制檔案,利用RMAN進行恢復操作