淺談LogMiner的使用 (轉)

amyz發表於2007-11-12
淺談LogMiner的使用 (轉)[@more@]

Logminer是每個a都應熟悉的工具,當一天由於的誤操作你需要做不完全的恢復時,由於你無法確定這個操作是哪個時間做的,所以這對你的恢復就帶來的很大的難度,丟失的資料也不能完全恢復回來。而LogMiner就可以幫你確定這個誤操作的準確時間。

我的測試環境是Aix4.3.3的操作,9.2.0.3的測試庫。

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

二、操作步驟
1、設定用於LogMiner分析的資料檔案存放的位置
 這是設定utl_file_dir引數的過程,我的示例:
 a、在initctc.ora檔案中加入如下一行
  utl_file_dir=/u01/arch
 b、得啟
  oracle>plus /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('0501 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操作,示例:
  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  它用於顯示用於分析的日誌列表資訊。

(全文完)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981953/,如需轉載,請註明出處,否則將追究法律責任。

相關文章