Oracle數據庫從RMAN備份集片段還原指定單個歸檔日志進行日志挖掘分析


起因:業務已知在之前某個時間點范圍內發生了可疑異常操作,希望通過日志挖掘來審查SQL動作

現狀:生產庫在線歸檔已備份后刪除,RMAN歸檔備份已經刷出超期的備份集文件

需求:通過RMAN還原歸檔到線上以進行日志挖掘

 

定位歸檔日志涉及范圍:

select * from v$archived_log l where to_date('2018-11-12 16:18:51','yyyy-mm-dd hh24:mi:ss') between L.FIRST_TIME and L.NEXT_TIME;

假設指定時段的歸檔日志已經被備份規則排除編錄並刪除,

如果備份也被排除編錄、但進行了異機或者磁盤備份則首先需要加回編錄:

CATALOG backuppiece '/u02/rmanbackup/181113_0215_L1_6201_arc_ECDBN_1pti31lf_1_1.rbf';

那么首先需要把歸檔從備份集還原到文件系統:

restore archivelog from logseq 31128 until logseq 31129 thread 1; --不加thread默認為1

再重新進行編錄:

CATALOG ARCHIVELOG '+FRA/archivelog/arc_ecdbpr_2_31129_928378592.arc';

 

下面是ORACLE日志挖掘的函數操作部分,

Begin
  SYS.DBMS_LOGMNR.ADD_LOGFILE( '+FRA/archivelog/arc_ecdbpr_2_31128_928378592.arc', 
  sys.dbms_logmnr.New);

  SYS.DBMS_LOGMNR.ADD_LOGFILE( '+FRA/archivelog/arc_ecdbpr_2_31129_928378592.arc', 
  sys.dbms_logmnr.AddFile);
end;

Begin
  SYS.DBMS_LOGMNR.START_LOGMNR( Options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG );
end;

Select * From V$LOGMNR_CONTENTS Order by 1

 

接下來就是怎么從挖掘出的SQL內容里怎么找出業務跟蹤時段的操作單號等等了:

Select scn,timestamp,operation,seg_owner,table_name,sql_redo,SESSION#,SERIAL#,SESSION_INFO,CLIENT_ID,sql_undo
 From V$LOGMNR_CONTENTS lc where LC.SQL_REDO like '%DOC20181111550736%' Order by 1
;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM