logminer工具對redo log或archive log的挖掘

dotaddjj發表於2011-07-26

oracle中可能需要對資料庫中產生的redo log和archive log進行日誌挖掘,來更好檢視資料庫的內部資訊,此時oracle提供了logminer來對日誌檔案進行挖掘。

挖掘的具體步驟:
oracle10g中的logminer工具安裝的指令碼是:
l $ORACLE_HOME/rdbms/admin/dbmslm.sql

2 $ORACLE_HOME/rdbms/admin/dbmslmd.sql.

logminer需要oracle的dbms_logmnr的package,如果系統包沒有裝好後面的步驟都處理不了,執行上述指令碼,可以查詢

desc dbms_logmnr

desc dbms_logmnr_d

檢視具體的package的下面的procedure。
1 設定utl_file_dir目錄,主要用於伺服器放置資料字典檔案的位置
alter system set utl_file_dir='d:oracleproduct10.2.0adminpfile' scope=spfile 因為是靜態引數無法動態修改
2 重啟資料庫
shutdowm immediate
startup
3 建立日誌挖掘用的目錄dbms_logmnr_d.build,如果不建立資料字典檔案,logminer解釋出來的語句中關於資料字典中的部分和數值都是16進位制形式,無法理解。
execute dbms_logmnr_d.build('test.ora','d:oracleproduct10.2.0adminpfile')
test.ora就是字典檔案,後面的就是utl_file_dir的路徑,會生成一個test.ora字典檔案
4 新增需要分析的redo log到目錄上.
execute dbms_logmnr.add_logfile('d:oracleproduct10.2.0oradatatestredo02.log',dbms_logmnr.new) 建立分析列表
execute dbms_logmnr.add_logfile('',dbms_logmnr.addfile) 新增其他日誌檔案到列表
execute dbms_logmnr.add_logfile('',dbms_logmnr.removefile) 移除日誌檔案出列表
5 在ult_file_dir目錄下面的test.ora就是透過dbms_logmnr和dbms_logmnr_d生成的日誌檔案,也就是redo02.log日誌檔案,此時基本可以說已經完成了redo log的分析,
但是我們更希望在sql中能檢視redo log的資訊,而且可以檢視具體的scn或者時間戳 user等的redo log對他們的產生的寫入的資訊
6 使用logminer進行日誌分析,也是dbms_logmnr中的start_logmnr過程
全部把redo log的資訊載入到v$logmnr_contents中
execute dbms_logmnr.start_logmnr(dictfilename=>'d:oracleproduct10.2.0adminpfiletest.ora')
指定時間戳把redo log的資訊時間戳的資訊載入到v$logmnr_contents動態效能檢視中
execute dbms_logmnr.start_logmnr(DictFileName => 'd:oracleproduct10.2.0adminpfiletest.ora ',

StartTime => to_date('2001-9-18 00:00:00','YYYY-MM-DD HH24:MI:SS')

EndTime => to_date(''2001-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS '));
透過scn來限制載入的redo log 資訊
execute dbms_logmnr.start_logmnr(DictFileName=>'d:oracleproduct10.2.0adminpfiletest.ora',
startscn=>20,
endscn=>50) 透過scn來限制
7 觀察分析結果v$logmnr_contents,此時redo log中的資訊已經載入到v$logmnr_contents中了,注意由於v$logmnr_contents存在pga中,所以必須要在當前session來檢視,因為pga是因為程式存在而存在,如果session一旦關閉,此pga資源也釋放了

動態效能檢視v$logmnr_contents包含logminer分析得到的所有資訊
TIMESTAMP 資料改變發生的時間
COMMIT_TIMESTAMP 資料改變提交的時間
SEG_OWNER 段的所有者名稱
SEG_NAME 資料發生改變的段名稱
SEG_TYPE 資料發生改變的段型別
SEG_TYPE_NAME 資料發生改變的段型別名稱
TABLE_SPACE 變化段的表空間
ROW_ID 特定資料變化行的ID
SESSION_INFO 資料發生變化時使用者程式資訊,如login_username=WACOS client_info= OS_username=oracle Machine_name=ITDB OS_terminal= OS_process_id=2782 OS_program (TNS V1-V3)
OPERATION 重做記錄中記錄的操作(如INSERT)
SQL_REDO 可以為重做記錄重做指定行變化的SQL語句
SQL_UNDO 可以為重做記錄回退或恢復指定行變化的SQL語句
我們可以利用LogMiner日誌分析工具來分析其他資料庫例項產生的重作日誌檔案,而不僅僅用來分析本身安裝LogMiner的資料庫例項的redo logs檔案。使用LogMiner分析其他資料庫例項時,有幾點需要注意:

LogMiner日誌分析工具僅能夠分析Oracle 8以後的產品,對於8以前的產品,該工具也無能為力,當然logminer由4個procedure和2個動態效能檢視組成,當然logminer的使用還需要探討,這裡僅列出了對日誌的挖掘。

[@more@]

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

相關文章