使用oracle LogMiner查看記錄檔__oracle

來源:互聯網
上載者:User
LogMiner的使用 =========================================================== 作者: tolywang(http://tolywang.itpub.net)
發表於:2005.01.19 11:03
分類: Oracle資料庫管理
出處:http://tolywang.itpub.net/post/48/14593
---------------------------------------------------------------
           Logminer是每個Dba都應熟悉的工具,當一天由於使用者的誤操作你需要做不完全的恢複時,由於你無法確定這個操作是哪個時間做的,所以這對你的恢複就帶來的很大的難度,丟失的資料也不能完全恢複回來。而LogMiner就可以幫你確定這個誤操作的準確時間。

測試環境是Aix4.3.3的作業系統,Oracle9.2.0.3的測試庫。

一、LogMiner的幾點說明
1、LogMiner可以幫你確定在某段時間所發的各種DML,DDL操作的具體時間和SCN號,它所依據的是歸檔記錄檔及聯機記錄檔。
2、它只能在Oracle8i及以後的版本中使用,不過它可以分析Oracle8的日誌。
3、Oracle8i只能用於分析DML操作,到Oracle9i則可以分析DDL操作了。
4、LogMiner不支援索引組織表、Long、LOB及集合類型。
5、MTS的環境也不能使用LogMiner.

二、操作步驟
1、設定用於LogMiner分析的資料檔案存放的位置
 這是設定utl_file_dir參數的過程,我的樣本:
 a、在initctc.ora檔案中加入如下一行
    utl_file_dir=/u01/arch
 b、得啟資料庫
   oracle>sqlplus /nolog  
   sql>conn / as sysdba
   sql>shutdown immediate
   sql>statup

2、產生資料字典檔案,是通過dbms_logmnr_d.build()來完成。
  SQL> BEGIN
   2     dbms_logmnr_d.build(
   3       dictionary_filename => 'logminer_dict.dat',
   4       dictionary_location => '/u01/arch'
   5     );
   6  END;
   7 /
 
  dictionary_location指的是Logminer資料字典檔案存放的位置,它必須匹配utl_file_dir的設定。
  其中的dictionary_filename指的是放於存放位置的字典檔案的名字,名字可以任意取。

3、建立一個日誌分析表
  a、建立日誌分析表資料庫必須在mount或nomount狀態,啟動資料庫到mount狀態。
    sqlplus /nolog
    sql>conn / as sysdba
    sql>shutdown immediate
    sql>starup mount
 
  b、建立日誌分析表,使用dbms_logmnr.add_logfile()
    SQL> BEGIN
     2     dbms_logmnr.add_logfile(
     3       options => dbms_logmnr.new,
     4       logfilename => '/u01/arch/arc_ctc_0503.arc'
     5     );
     6  END;
     7 /      
    其中的options有三種取值,dbms_logmnr.new用於建一個日誌分析表;dbms_logmnr.addfile用於加入用於分析的的記錄檔;dbms_logmnr.removefile用於移出用於分析的記錄檔。
       

4、添加用於分析的記錄檔。
    SQL> BEGIN
     2     dbms_logmnr.add_logfile(
     3       options => dbms_logmnr.addfile,
     4       logfilename => '/u01/arch/arc_ctc_0504.arc'
     5     );
     6  END;
     7 /
 
  使用則可以把這個檔案從日誌分析表中移除,從而不進行分析。
    SQL> BEGIN
     2     dbms_logmnr.add_logfile(
     3       options => dbms_logmnr.removefile,
     4       logfilename => '/u01/arch/arc_ctc_0503.arc'
     5     );
     6  END;
     7 /  
    

5、啟動LogMiner進行分析。
    SQL> BEGIN
     2     dbms_logmnr.start_logmnr(
     3       dictfilename => '/u01/arch/logminer_dict.dat',
     4       starttime => to_date('20030501 12:15:00','yyyymmdd hh24:mi:ss'),
     5       endtime => to_date('20030501 15:40:30','yyyymmdd hh24:mi:ss')
     6     );
     7  END;
     8 /
   
    即分析2003年5月1日這天12:15至15:40這段時間,並把分析結果放到資料字典中以用於查詢。還有兩個參數StartScn(起始scn號)及EndScn(終止Scn)號。

6、查看日誌分析的結果,通過查詢v$logmnr_contents可以查詢到
  a、查看DML操作,樣本:
    SELECT operation,
           sql_redo,
           sql_undo,
      FROM V$logmnr_contents
     WHERE seg_name = 'QIUYB';
  
     OPERATION     SQL_REDO                    SQL_UNDO
     ----------    --------------------------  --------------------------
     INSERT        inser into qiuyb.qiuyb ...  delete from qiuyb.qiuyb...
 
    其中operation指的是操作,sql_redo指的是實際的操作,sql_undo指的是用於取消的相反的操作。
 
  b、查看DDL操作,樣本:
    SELECT timstamp,
           sql_redo
      FROM v$logmnr_contents
     WHERE upper(sql_redo) like '%TRUNCATE%';

7、結束LogMiner的分析。
  SQL>BEGIN
   2     dbms_logmnr.end_logmnr;
   3   end;
   4 /

三、與LogMiner相關的資料字典。
1、v$loglist           它用於顯示曆史記錄檔的一些資訊
2、v$logmnr_dictionary 因logmnr可以有多個字典檔案,該視圖用於顯示這方面資訊。
3、v$logmnr_parameters 它用於顯示logmnr的參數
4、v$logmnr_logs       它用於顯示用於分析的日誌列表資訊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.