Oracle logmnr使用

mikeliuy發表於2015-03-16


logmnr是用於分析日誌的工具,主要有以下幾個用途:

1. 查明資料庫的改變登記:能夠用Logmnr來分析這些事務,看看究竟發生了些什麼事情

2. 找回丟失的資料,當不能利用flashback時候,能夠利用Logmnr工具來找回資料,這個時候,只必需有歸檔日誌即可

logmnr工具包含的過程與檢視

dbms_logmnr_d包包含了:

(1)add_logfile:用來增加/剔除用於分析的日誌檔案.

(2)start_logmnr:用來開啟日誌分析,而且在9i/10g,能夠開啟許多不同的分析選項.

(3)end_logmnr:用來終止分析會話,它將回收LogMiner所挪借的記憶體

LogMiner相關的資料字典:

v$logmnr_dictionary

LogMiner可能利用的資料字典訊息.

v$logmnr_parameters

目前LogMiner所設定的引數訊息.

v$logmnr_logs

目前用於分析的日誌列表.

v$logmnr_contents

日誌分析收穫.

 

使用示例1:

SQL> exec sys.dbms_logmnr.add_logfile(LogFileName=>'c:\oradata\jssweb\arc\20120911_35.arc',options=>dbms_logmnr.new);

SQL> exec sys.dbms_logmnr.add_logfile(LogFileName=>'c:\oradata\jssweb\arc\20120911_36.arc',options=>dbms_logmnr.addfile);

--開啟日誌分析

DBMS_LOGMNR_D.STORE_IN_FLAT_FILE

將資料字典提取到一個平面資料字典檔案

DBMS_LOGMNR_D.STORE_IN_REDO_LOGS

將資料字典提取到重做日誌檔案

DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG

使用當前的資料庫的聯機資料字典(只能分析當前資料庫的重做日誌檔案,此時就不需要平面字典檔案)

 

SQL> exec sys.dbms_logmnr.start_logmnr(options=>sys.dbms_logmnr.dict_from_online_catalog);

--檢視分析結果

SQL> select t.scn,t.timestamp,t.seg_owner,t.operation from v$logmnr_contents t where t.seg_name='MYTESTTAB';

--釋放記憶體

SQL> exec dbms_logmnr.end_logmnr;

使用示例2

1). 修改初始化引數

  SQL> alter system set utl_file_dir='C:\oracle\logmnr\' SCOPE=SPFILE;

2). 重啟資料庫

3). 提取資料字典檔案

  SQL> execute dbms_logmnr_d.build('logmnr_dict.ora','c:\oracle\logmnr\',options=>dbms_logmnr_d.store_in_flat_file);

4). 指定LogMiner要分析的重做日誌檔案

  SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE('C:\oradata\orcl\REDO01.LOG',options=>dbms_logmnr.NEW);
    SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE('C:\oradata\orcl\REDO02.LOG',options=>dbms_logmnr.ADDFILE);
    SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE('C:\oradata\orcl\REDO03.LOG',options=>dbms_logmnr.ADDFILE);

5). 啟動LogMiner會話

  --options=>dbms_logmnr.NO_ROWID_IN_STMT 取消"ROWID="的內容

  --dbms_logmnr.DICT_FROM_ONLINE_CATALOG只分析當前資料庫的重做日誌檔案

  --options=>dbms_logmnr.NO_ROWID_IN_STMT+dbms_logmnr.DICT_FROM_ONLINE_CATALOG

  SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'c:\oracle\logmnr\logmnr_dict.ora');

6). 檢視結果

  SQL> SELECT * FROM V$LOGMNR_LOGFILE;

  SQL> select t.scn,t.timestamp,t.seg_owner,t.operation from v$logmnr_contents t where t.seg_name='MYTESTTAB';

7). 結束LogMiner會話

  SQL> EXECUTE DBMS_LOGMNR.END_LOGMNR;

 

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

相關文章