1. 程式人生 > >Oracle logminer 日誌挖掘

Oracle logminer 日誌挖掘

outline left 修改 set lpad span rac rule commit

Table of Contents

  • 1. LOGMNR簡介
  • 2. 創建數據字典
    • 2.1. 外部文件存儲數據字典
    • 2.2. redo log 存儲數據字典
  • 3. 添加需要分析的文件
  • 4. 開始分析文件
  • 5. 開始分析內容
  • 6. 結束日誌分析

1 LOGMNR簡介

logmnr 可以用來分析redo 日誌和歸檔文件。將redo日誌或者歸檔文件中的內容提取出來,供DBA進行操作分析歷史操作,比如進行誤刪除操作的恢復。 LOGMNR 分析日誌,需要創建一個數據字典,這個數據字典可以存儲在外部文件(external file) 或者redo log 中。 如果要存儲在外部文件中,數據庫參數utl_file_dir 需要配置,並重啟數據庫。有些時候,我們的生產系統不能重啟,因此只能選用redo log來存儲數據字典。

2 創建數據字典

2.1 外部文件存儲數據字典

  1. 修改參數
    alter system set utl_file_dir=‘/home/oracle‘ sid=‘*‘ scope=spfile;
    
  2. 重啟數據庫
  3. 創建數據字典
    EXECUTE DBMS_LOGMNR_D.BUILD(‘dictionary.ora‘,‘/home/oracle‘, OPTIONS => DBMS_LOGMNR_D.STORE_IN_FLAT_FILE);
    

2.2 redo log 存儲數據字典

使用redo log 存儲數據字典不需要重啟數據庫,也不需要配置任何參數,這種方式比較靈活.直接可以創建數據字典到redo文件。

dbms_logmnr_d.build(options => dbms_logmnr_d.STORE_IN_REDO_LOGS);

3 添加需要分析的文件

  • 示例
dbms_logmnr.ADDFILE(‘+RECOC1/dbm01/archivelog/2017_09_13/thread_2_seq_808.1090.954602409‘,dbms_logmnr.new);
dbms_logmnr.ADDFILE(‘+RECOC1/dbm01/archivelog/2017_09_13/thread_2_seq_809.1076.954602483‘,dbms_logmnr.addfile);
  • 函數說明
    函數 說明
    dbms_logmnr.new 在數據字典中添加第一個需要分析的文件
    dbms_logmnr.addfile 在數據字典中添加其他需要分析的文件

4 開始分析文件

我們使用不同的方式存儲數據字典,讓oracle開始分析文件的命令參數不一樣。如果是外部文件方式存儲數據字典,是不需要使用任何參數的,如果使用的是redo 日誌文件,需要明確告知Oracle 數據字典存儲在redo文件中

  • 示例
    • 外部文件數據字典
      dbms_logmnr.start;
      
    • redo log 存儲數據字典
      dbms_logmnr.start_logmnr(options => dbms_logmnr.dict_from_online_catalog+dbms_logmnr.committed_data_only);
      

5 開始分析內容

經過上一步分析後,日誌中的內容,可以在視圖v$logmnr_contents 中查詢到。

6 結束日誌分析

dbms_logmnr.end_logmnr;
NOTE
logmnr 挖掘日誌,是會話級別的操作。分析數據不在數據庫級別共享。

Oracle logminer 日誌挖掘