使用logminer進行日誌分析

 LogMiner工具的主要用途有:sql

1)跟蹤數據庫的變化:能夠離線的跟蹤數據庫的變化,而不會影響在線系統的性能。
2)回退數據庫的變化:回退特定的變化數據,減小point-in-time recovery的執行。
3)優化和擴容計劃:可經過分析日誌文件中的數據以分析數據增加模式。
 
數據庫

安裝LogMiner工具,這兩個腳本必須均以SYS用戶身份運行
@$ORACLE_HOME/rdbms/admin/dbmslmd.sql 
數據結構

用來建立DBMS_LOGMNR_D包建立數據字典文件,用於提取數據字典信息到外部平面文件或者是聯機日誌中
@$ORACLE_HOME/rdbms/admin/dbmslm.sql
ide

用來建立DBMS_LOGMNR   
grant execute on dbms_logmnr to public;   
10G以前,logmnr使用的臨時表v$logmnr_contents使用的是system表空間,在10g後使用的是sysaux表空間,能夠修改表空間:
exec sys.dbms_logmnr_d.set_tablespace('USERS');
工具

 

有三種方法能獲得數據字典的方法:
1
、字典提取到一個平面數據字典文件(DBMS_LOGMNR_D.STORE_IN_FLAT_FILE)9i之後不提倡使用
性能

二、 據字典提取到重作日誌文件(DBMS_LOGMNR_D.STORE_IN_REDO_LOGS)
3
、當前的數據庫的聯機數據字典(DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG),只能分析當前數據庫的重作日誌文件
優化

 

使用補充日誌,將數據字典提取到重作日誌文件要用到: ui

Enable Supplemental Logging
  Database-Level Supplemental Logging
    Minimal Supplemental Logging
           ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    Database-Level Identification Key Logging
           ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
           ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
           ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
           ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
    Disabling Database-Level Supplemental Logging
           disable database-level supplemental logging:
             ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
             ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
             ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
             ALTER DATABASE DROP SUPPLEMENTAL LOG DATA;
           disable all database supplemental logging:
             ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
             ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
             ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
             ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
             ALTER DATABASE DROP SUPPLEMENTAL LOG DATA;
  Table-Level Supplemental Logging          
    Table-Level Identification Key Logging
           ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
           ALTER TABLE HR.EMPLOYEES ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
           ALTER TABLE HR.EMPLOYEES ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
           ALTER TABLE HR.EMPLOYEES ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
    Table-Level User-Defined Supplemental Log Groups
           ALTER TABLE HR.EMPLOYEES ADD SUPPLEMENTAL LOG GROUP emp_parttime(EMPLOYEE_ID, LAST_NAME,DEPARTMENT_ID) ALWAYS;
           ALTER TABLE HR.EMPLOYEES ADD SUPPLEMENTAL LOG GROUP emp_fulltime(EMPLOYEE_ID, LAST_NAME,DEPARTMENT_ID);
           ALTER TABLE HR.EMPLOYEES ADD SUPPLEMENTAL LOG GROUP emp_parttime(DEPARTMENT_ID NO LOG, EMPLOYEE_ID);
spa

 

1、在初始化參數文件中設置參數utl_file_dir,使用平面數據字典文件方法須要用到這個參數 日誌

 

2、提取數據字典

1)提取數據字典到平面數據文件

Execute dbms_logmnr_d.build('平面數據文件名','路徑名’,options=>dbms_logmnr_d.store_in_flat_file);

2)提取數據字典到重作日誌文件

Alter database add dupplemental log data;

Execute dbms_logmnr_d.build(options=>dbms_logmnr_d.store_in_redo_logs);

3)使用當前數據庫的聯機數據字典

Execute dbms_logmnr_d.build(options=>dbms_logmnr_d.dict_from_online_catalog);

 

3、 添加須要監視的日誌文件

1) 建立logminer要分析的日誌文件列表

Execute dbms_logmnr.add_logfile(logfilename=>'******',options=>dbms_logmnr.new);

2) 添加其餘日誌文件到列表

Execute dbms_logmnr.add_logfile(logfilename=>'******',options=>dbms_logmnr.addfile);

3) 從要分析的日誌列表中刪除日誌

Execute dbms_logmnr.add_logfile(logfilename=>'*****',options=>dbms_logmnr.removefile);

 

4、 啓動logminer會話,進行日誌分析

1) 無限制條件分析

Execute dbms_logmnr.start_logmnr(dictfilename=>'******');

------指定平面文件名

Execute dbms_logmnr.start_logmnr(optioons=>dbms_logmnr.dict_from_online_catalog+

dbms_logmnr.committed_data_only);

----- committed_data_only 標識咱們只提取已提交的事務

Execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

------Logminer將使用聯機數據字典

Execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_redo_logs);

------Logminer將在重作日誌文件中查找字典數據

Execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.skip_curruption);

------忽略redo日誌中的全部錯誤

Execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.ddl_dict_tracking);

------用來跟蹤ddl語句,默認是關閉的!當使用online catalog時,不能使用!

2) 有限制條件分析

使用平面數據字典文件

Execute dbms_logmnr.start_logmnr(dictfilename=>'*******',starttime=>'*****',

Endtime=>'*******');

Execute dbms_logmnr.start_logmnr(dictfilename=>'*******',starttime=>'*****',

Endtime=>'*******',options=>dbms_logmnr.continuous_mine);

Execute dbms_logmnr.start_logmnr(dictfilename=>'*******',startscn=>*****,

endscn=>*****);

使用重作日誌

Execute dbms_logmnr.start_logmnr(startscn=>******,endscn=*******,options=>

dbms_logmnr.dict_form_redo_logs);

使用聯機數據字典

Execute dbms_logmnr.start_logmnr(startscn=>******,endscn=>******,options=>

dbms_logmnr.dict_from_online_catalog+dbms_logmnr.continuous_mine);

 

5、 查詢v$logmnr_contents

 

6、 結束logminer會話,釋放全部資源和清除PGA   
    EXECUTE DBMS_LOGMNR.END_LOGMNR;  

 

7、 相關的數據字典
v$logmnr_contents
v$logmnr_logs
v$logmnr_dictionary
v$logmnr_parameters
v$lolist

  8、 其餘注意事項
1)LogMiner
生成行級sql,並非實際的語句
2)
全部信息都在PGA中,會話結束,信息丟失,能夠用create table as select * from v$logmnr_contents保存信息。
3)
不支持下面的數據結構
簡單的和嵌套的抽象數據結構
嵌套表和varry
索引組織表
一個帶有族建的create table as select
4
LogMiner必須使用被分析數據庫實例產生的字典文件,而不是安裝LogMiner的數據庫產生的字典文件,另外必須保證安裝LogMiner數據庫的字符集和被分析數據庫的字符集相同。5)被分析數據庫平臺必須和當前LogMiner所在數據庫平臺同樣。
6
LogMiner日誌分析工具僅可以分析Oracle 8之後的產品。

相關文章
相關標籤/搜索