捎帶手,簡單看看Oracle的LogMiner

louloueva發表於2009-01-03

初步瞭解過SQL*Loader之後,還有些時間

既然Oracle® Database Utilities 10g Release 2 (10.2)B14215-01文件還有很多工具的介紹

就手把另一個Oracle比較重要的工具LogMiner看看吧,畢竟此工具還是十分強大的

 

有些時候,DBA可能需要去尋找資料庫在某個時段執行過什麼操作

Oracle本身並沒有直接顯示歷史操作的檢視

使用者可以通過設定audittrace等一些功能來實現跟蹤

但這些會讓Oracle產生一些額外的開銷

 

資料庫的動作,大都會記錄在redo log

但是,正常情況下,使用者無法直接檢視redo log的內容

LogMiner就是讓使用者去檢視此內容的工具

它能幫助DBA查明某個錯誤的操作,查詢某個特定條件的操作,輔助DBA進行效能調整

 

使用LogMiner,應當熟悉幾個設定

源資料庫,將要分析的redo log所屬的資料庫

分析資料庫,進行分析的資料庫,可以是源庫,也可以是另一個

源庫和分析庫需要相同的硬體配置

LogMiner資料字典,幫助我們更友好的理解log內容,否則我們將得到難以理解的內容

需要分析的所有redo logLogMiner不能分析來自不同源庫,SCN不一直的redo log

其中,需要注意相關PL/SQL package的使用,DBMS_LOGMNR_DDBMS_LOGMNR

(需要EXECUTE_CATALOG_ROLE許可權)

經過呼叫相關package後,可以通過V$LOGMNR_CONTENTS來檢視分析結果

(需要SELECT ANY TRANSACTION許可權)

對於LogMiner資料字典的指定,可以為 線上目錄,提取到redo log,提取到普通檔案

(最後一項不被推薦,僅為相容用)

對於所需的redo log檔案的指定,可為 自動(設定時間或SCN),手動(DBMS_LOGMNR.ADD_LOGFILE)

而在呼叫LogMiner的過程中,眾多的Option選項的組合

可以實現更多更復雜的功能

 

在舉例使用LogMiner之前,有個Oracle的特性需要注意

supplement logging,以redo為基礎的應用,需要一些附加列記錄到redo log

這個日誌記錄過程就是supplement logging

Oracle預設並沒有開啟這個特性

並推薦如果常規使用LogMiner,請開啟minimal supplemental logging

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

是其它環境中(如分散式)進行LogMiner,可以考慮Identification Key Logging等其它特性

要關閉剛才新增的功能,可以通過命令

ALTER DATABASE DROP SUPPLEMENTAL LOG DATA;

 

好了,粗略總結先告一段落,進行舉例,對最近的歸檔日誌進行LogMiner操作

先來查詢最近的歸檔日誌

SELECT NAME FROM V$ARCHIVED_LOG

WHERE FIRST_TIME = (SELECT MAX(FIRST_TIME) FROM V$ARCHIVED_LOG);

然後把查到的結果,新增為要查詢的LOGFILE(請注意)

EXECUTE DBMS_LOGMNR.ADD_LOGFILE(

LOGFILENAME => '/usr/oracle/data/db1arch_1_16_482701534.dbf',

OPTIONS => DBMS_LOGMNR.NEW);

開始LogMiner

EXECUTE DBMS_LOGMNR.START_LOGMNR(

OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);

嗯,可以檢視V$LOGMNR_CONTENTS

另外不要忘記結束LogMiner

 

簡單熟悉了一下Oracle強大的工具LogMiner的一些相關資訊,也稍微進行了實踐

還有很多強大的功能沒有涉及,今後有機會慢慢使用吧~

 

今天主要是對Oracle的一些工具做了一項初步的瞭解

要精通這些工具可不是一朝一夕的事情

今後要走的路還很長啊 ◎◎

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

相關文章