LogMiner詳解
-、基本介紹
LogMiner工具可以分析所有對於資料庫的DML操作語句,另外還可以分析得到一些必要的回滾SQL。該工具特別適用於除錯、審計或回退特定事務。LogMiner既可以分析線上日誌,也可以分析離線日誌;既可以分析本身資料庫的redo Log,也可以分析其他資料庫的redo log.利用這些資料,DBA可以:
*發現使用者的誤操作
*確定如何在事務級別上進行最精細的還原操作
*透過趨向分析,進行資料庫的調優和規劃
*進行崗位審計
二、基本組成
2個PL/SQL包:
DBMS_LOGMNR_D:
包含一個用於提取資料字典的過程,即DBSM_LOGMNR_D.build()。還 包含一個重建LogMiner的過程,DBMS_LOGMNR_D.set_tablespace(),預設logminer的表是建在system表空間下。
提取資料字典方式:
1、提取為flat file
需要設定UTL_FILE_DIR引數(需重啟資料庫)
alter system set UTL_FILE_DIR='/logminer' scope=spfile
exec DBMS_LOGMNR_build (dictionary_filename=>'logmnr.ora',dictionary_location=>'/logminer',【options=>DBMS_LOGMNR_D.STORE_IN_FLAT_FILE】)
2、提取為redo日誌
必須執行在歸檔模式
exec DBMS_LOGMNR_D.build(options=>DBMS_LOGMNR_D.STORE_IN_REDO_LOGS)
當這些資料字典的redo日誌被歸檔後,可以透過查詢V$ARCHIVE_LOG檢視來查詢:
select name from v$archive_log where dictionary_begin='YES';
select name from v$archive_log where dictionary_end='YES';
如果將字典資訊提取為redo檔案,在使用DBMS_LOGMNR.add_logfile新增分析的日誌檔案時,需要將這些包含字典資訊的redo檔案也新增進去。同時在使用start_logmnr開始分析時,需要制定DICT_FROM_REDO_LOGS引數。
3、使用online catalog
exec DBMS_LOGMNR_start_logmnr(options=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG)
DBMS_LOGMNR:
add_logfile(options=> ,logfilename=> )用於新增刪除用於分析的日誌。options:dbms_logmnr.new/addfile/removefile
start_logmnr(options=> ,dictfilename=> , [starttime/endtime/startscn/endscn]):用來開啟日誌分析,同時確定資料提取條件
end_logmnr():終止分析
與logminer相關檢視:
v$logmnr_dictionary:logminer資料字典資訊
v$logmnr_parameters:引數資訊
v$logmnr_logs:當前用於分析的日誌列表
v$logmnr_contents:日誌分析結果
三、例項
1、建立DBMS_LOGMNR包和相關資料字典
@$ORACLE_HOME\rdbms\admin\dbmslm.sql
@$ORACLE_HOME\rdbms\admin\dbmslmd.sql
2、初始化設定
a:建議開啟最小補充日誌
alter database add supplemental log data;
b:可以制定logminer表空間
exec DBMS_LOGMNR_D.set_tablespace('logminer');
3、提取字典
如前所述,分別將字典檔案提取為flat file或redo log,或直接使用online catalog
a:alter system set UTL_FILE_DIR='' scope=spfile;
exec DBMS_LOGMNR_D.build(dictionary_filename=>'',dictionary_location=>'',options=>DBMS_LOGMNR_D.STORE_IN_FLAT_FILE);
b:exec DBMS_LOGMNR_D.build(options=>DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);
c:exec DBMS_LOGMNR_D.build(options=>DBMS_LOGMNR_D.DICT_FROM_ONLINE_CATALOG);
4、制定需要分析的日誌
exec DBMS_LOGMNR.add_logfile(options=>DBMS_LOGMNR.NEW,logfilename=>'/oracle/logs/redo01.log');
exec DBMS_LOGMNR.add_logfile(options=>DBMS_LOGMNR.ADDFILE,logfilename=>'/oralce/logs/redo02.log');
exec DBMS_LOGMNR.add_logfile(options=>DBMS_LOGMNR.REMOVEFILE,logfilename=>'/oracle/logs/redo3.log')
5、啟動LogMiner
若字典提取為flat file,需指定Dictionary引數,若沒有字典,需指定DICT_FROM_REDO_LOGS或DICT_FROM_ONLINE_CATALOG引數。
exec DBMS_LOGMNR.start_logmnr(dictfilename=>'',options=>)
過濾LogMiner返回的資料:
a:只顯示已提交的事務
exec DBMS_LOGMNR.start_logmnr(options=>DBMS_LOGMNR.COMMITED_DATAONLY,dictfilename=>'');
b:忽略redo錯誤
exec DBMS_LOGMNR.start_logmnr(options=>DBMS_LOGMNR.SKIP_CORRUPTION,dictfilename=>'');
c:按時間過濾
exec DBMS_LOGMNR.start_logmnr(dictfilename=>'',starttime=>to_date('',''),endtime=>to_date('',''));
d:按SCN過濾
exec DBMS_LOGMNR.start_logmnr(dictfilename=>'',startscn=>1,endscn=>5);
e:跟蹤DDL語句(預設是關閉的,當字典使用ONLINE CATALOG時不能使用該選項)
exec DBMS_LOGMNR.start_logmnr(options=>DBMS_LOGMNR.DDL_DICT_TRACKING,dictfilename=>'');
6、查詢分析結果
select * from v$logmnr_contents;
seg_name:物件名
scn:scn號
sql_redo:所操作的sql
sql_undo:恢復用的sql
timestamp:sql發出的時間
operation:sql的型別(insert、update、delete、DDL等)
session#:發出該操作的session
7、結束分析
exec DBMS_LOGMNR.end_logmnr():一旦結束分析,v$logmnr_contents中的分析結果也隨之不再存在,因為分析資訊存放在PGA中。
注意:
1、logminer日誌分析工具僅能夠分析oracle8以後的產品
2、在查詢v$logmnr_contents時,where後條件一定要大寫
3、當用logminer分析其他資料庫例項產生的redo log檔案時
a:logminer必須使用被分析資料庫例項產生的字典檔案,而不是安裝logminer的資料庫產生的字典檔案
b:必須保證安裝logminer資料庫的字符集和被分析資料庫的字符集相同
c:被分析資料庫所在平臺必須和安裝logminer資料庫所在平臺一樣
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31444259/viewspace-2136306/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle LogMinerOracle
- logminer總結
- 使用LogMiner工具
- [zt] Oracle LogMinerOracle
- LogMiner 學習
- Oracle logminer(轉)Oracle
- Logminer日誌挖掘
- DBA 分析利器 LogMiner
- LogMiner 用法淺談
- Oracle Logminer 說明Oracle
- Oracle logminer學習Oracle
- LOGMINER日誌分析
- LogMiner 字典安裝
- logminer 日誌分析案例
- logminer抽取日誌案例
- ORACLE logminer 日誌挖掘Oracle
- (轉)Oracle Logminer 說明Oracle
- oracle之logminer的使用Oracle
- Oracle高可用之LogMinerOracle
- oracle 10g logminerOracle 10g
- 安裝oracle 的LogMinerOracle
- logminer工具的學習
- 【Oracle】Oracle logminer功能介紹Oracle
- logminer日誌挖掘技術
- ORACLE的日誌挖掘 logminerOracle
- 記一次Oracle logminerOracle
- [zt] Oracle LogMiner 終結版Oracle
- 安裝和使用LogMiner工具
- logminer如何安裝配置使用
- LogMiner的安裝和使用
- 有關logminer的學習:
- LOGMINER的記憶體消耗記憶體
- 淺談LogMiner的使用 (轉)
- Logminer如何檢視日誌
- LOGMINER工具分析報錯誤解決方法 ORA-00333
- 使用oracle的logminer同步資料Oracle
- Oracle 12c logminer測試Oracle
- 分析資料庫日誌(LogMiner)資料庫