SQL> conn sys/sys as sysdba
已連接。
SQL> @C:\oracle\ora92\rdbms\admin\dbmslmd.sql
過程已創(chuàng)建。
沒有錯誤。
授權(quán)成功。
PL/SQL 過程已成功完成。
程序包已創(chuàng)建。
SQL> @C:\oracle\ora92\rdbms\admin\dbmslms.sql
程序包已創(chuàng)建。
沒有錯誤。
授權(quán)成功。
SQL> EXECUTE dbms_logmnr_d.build(dictionary_filename=>'v816dict.ora',dictionary_location=>'e:\oracle\logs');
SQL> EXECUTE dbms_logmnr.add_logfile(LogFileName=>'e:\Oracle\oradata\NCDBPX\redo01.log',Options=>dbms_logmnr.new);
PL/SQL procedure successfully completed.
SQL> EXECUTE dbms_logmnr.add_logfile(LogFileName=>'e:\Oracle\oradata\NCDBPX\redo02.log',Options=>dbms_logmnr.ADDFILE);
PL/SQL procedure successfully completed.
SQL> EXECUTE dbms_logmnr.add_logfile(LogFileName=>'e:\Oracle\oradata\NCDBPX\redo03.log',Options=>dbms_logmnr.ADDFILE);
PL/SQL procedure successfully completed.
SQL> EXECUTE dbms_logmnr.start_logmnr(DictFileName=>'e:\oracle\logs\v816dict.ora');
PL/SQL procedure successfully completed.
SQL> select sql_REDO from v$logmnr_contents where upper(operation)='DELETE' and upper(sql_redo) like '%GPRS_SER%'
2 /
no rows selected
SQL> ed
Wrote file afiedt.buf
1* select sql_REDO from v$logmnr_contents where upper(operation)='CREATE' and upper(sql_redo) like '%EMP%'
SQL> /
no rows selected
--------------------------------------------------------------------------------------
LogMiner的主要用途
LogMiner工具的主要用途有:
(1)跟蹤數(shù)據(jù)庫的變化:可以離線的跟蹤數(shù)據(jù)庫的變化,而不會影響在線系統(tǒng)的性能。
(2)回退數(shù)據(jù)庫的變化:回退特定的變化數(shù)據(jù),減少point-in-time recovery的執(zhí)行。
(3)優(yōu)化和擴容計劃:可通過分析日志文件中的數(shù)據(jù)以分析數(shù)據(jù)增長模式。
Oracle9i LogMiner的增強功能
(1)支持更多數(shù)據(jù)/存儲類型:鏈接/遷移行、CLUSTER表操作、DIRECT PATH插入以及DDL操作。
(2)提取和使用數(shù)據(jù)字典的選項:現(xiàn)在數(shù)據(jù)字典不僅可以提取到一個外部文件中,還可以直接提取到重做日志流中,它在日志流中提供了操作當時的數(shù)據(jù)字典快照,這樣就可以實現(xiàn)離線分析。
(3)允許對DML操作按事務(wù)進行分組:可以在START_LOGMNR()中設(shè)置COMMITTED_DATA_ONLY選項,實現(xiàn)對DML操作的分組,這樣將按SCN的順序返回已經(jīng)提交的事務(wù)。
(4)支持SCHEMA的變化:在數(shù)據(jù)庫打開的狀態(tài)下,如果使用了LogMiner的DDL_DICT_TRACKING選項,Oracle9i的LogMiner將自動對比最初的日志流和當前系統(tǒng)的數(shù)據(jù)字典,并返回正確的DDL語句,并且會自動偵察并標記當前數(shù)據(jù)字典和最初日志流之間的差別,這樣即使最初日志流中所涉及的表已經(jīng)被更改或者根本已經(jīng)不存在,LogMiner同樣會返回正確的DDL語句。
(5)在日志中記錄更多列信息的能力:例如對于UPDATE操作不僅會記錄被更新行的情況,還可以捕捉更多已發(fā)生的更新操作信息。
(6)支持基于數(shù)值的查詢:Oracle9i LogMiner在支持原有基于元數(shù)據(jù)(操作、對象等)查詢的基礎(chǔ)上,開始支持基于實際涉及到的數(shù)據(jù)的查詢。例如涉及一個工資表,現(xiàn)在可以很容易地查出員工工資由1000變成2000的原始更新語句,而在之前只能選出所有的更新語句。
LogMiner的安裝
要安裝LogMiner工具,必須首先要以SYS用戶身份運行下面兩個腳本文件:
(l)$Oracle_HOME/rdbms/admin/dbmslsm.sql
用來創(chuàng)建DBMS_LOGMNR包,該包用來分析日志文件。
(2)$Oracle_HOME/rdbms/admin/dbmslsmd.sql
用來創(chuàng)建DBMS_LOGMNR_D包,該包用來創(chuàng)建數(shù)據(jù)字典文件。
LogMiner工具的使用
(1)創(chuàng)建數(shù)據(jù)字典文件(data-dictionary)
創(chuàng)建數(shù)據(jù)字典的目的就是讓LogMiner引用涉及到內(nèi)部數(shù)據(jù)字典中的部分時為他們實際的名字,而不是系統(tǒng)內(nèi)部的16進制。數(shù)據(jù)字典文件是一個文本文件,使用包DBMS_LOGMNR_D來創(chuàng)建。
首先在init.ora初始化參數(shù)文件中,指定數(shù)據(jù)字典文件的位置,也就是添加一個參數(shù)UTL_FILE_DIR,該參數(shù)值為服務(wù)器中放置數(shù)據(jù)字典文件的目錄。如:
UTL_FILE_DIR=e:\Oracle\logs;
重新啟動數(shù)據(jù)庫,使新加的參數(shù)生效,然后創(chuàng)建數(shù)據(jù)字典文件:
CONNECT SYS
EXECUTE dbms_logmnr_d.build(dictionary_filename=>'v816dict.ora',dictionary_location=>'e:\oracle\logs');
(2)創(chuàng)建要分析的日志文件列表
Oracle的重作日志分為兩種,在線(online)和離線(offline)歸檔日志文件,下面就分別來討論這兩種不同日志文件的列表創(chuàng)建。
①分析在線重作日志文件
● 創(chuàng)建列表
EXECUTE dbms_logmnr.add_logfile(LogFileName=>'e:\Oracle\oradata\sxf\redo01.log',Options=>dbms_logmnr.new);
● 添加其他日志文件到列表
EXECUTE dbms_logmnr.add_logfile(
LogFileName=>'e:\Oracle\oradata\sxf\redo02.log',
Options=>dbms_logmnr.addfile);
②分析離線日志文件
● 創(chuàng)建列表
EXECUTE dbms_logmnr.add_logfile(LogFileName=>'E:\Oracle\oradata\sxf\archive\ARCARC09108.001',Options=>dbms_logmnr.new);
● 添加另外的日志文件到列表
EXECUTE dbms_logmnr.add_logfile(
LogFileName=>'E:\Oracle\oradata\sxf\archive\ARCARC09109.001',Options=>dbms_logmnr.addfile);
(3)使用LogMiner進行日志分析
①無限制條件
EXECUTE dbms_logmnr.start_logmnr(DictFileName=>'e:\oracle\logs\v816dict.ora');
②有限制條件
通過對過程DBMS_ LOGMNR.START_LOGMNR中幾個不同參數(shù)的設(shè)置,可以縮小要分析日志文件的范圍。通過設(shè)置起始時間和終止時間參數(shù)可以限制只分析某一時間范圍的日志。
(4)觀察分析結(jié)果(v$logmnr_contents)
動態(tài)性能視圖v$logmnr_contents包含LogMiner分析后得到的所有的信息。
與日志分析相關(guān)視圖還有:
①V$LOGMNR_DICTIONARY:查詢使用的數(shù)據(jù)字典文件。
②V$LOGMNR_PARAMETERS:查詢當前LogMiner設(shè)定的參數(shù)。
③V$LOGMNR_FILES:查詢分析的日志文件。
④V$LOGMNR_CONTENTS:日志文件的內(nèi)容。
3.其他注意事項
(1)LogMiner必須使用被分析數(shù)據(jù)庫實例產(chǎn)生的字典文件,而不是安裝LogMiner的數(shù)據(jù)庫產(chǎn)生的字典文件,另外必須保證安裝LogMiner數(shù)據(jù)庫的字符集和被分析數(shù)據(jù)庫的字符集相同。
(2)被分析數(shù)據(jù)庫平臺必須和當前LogMiner所在數(shù)據(jù)庫平臺一樣。
(3)LogMiner日志分析工具僅能夠分析Oracle 8以后的產(chǎn)品。