二、建立字典文件
字典文件用于存放表及對象ID號之間的對應關(guān)系。當使用字典文件時(shí),它會(huì )在表名和對象ID號之間建立一一對應的關(guān)系。因此需要注意,如果用戶(hù)建立了新表之后,并且將來(lái)可能會(huì )對該表進(jìn)行日志分析,那么就需要重新建立字典文件,以將其對象名及對象ID號存放到字典文件中。
1.修改參數文件,添加參數:UTL_FILE_DIR=C:\Oracle\phj\logmnr
目錄logmnr必須事先手工建立,該目錄用于存放產(chǎn)生的字典文件,目錄名稱(chēng)可以自定。
2.重新啟動(dòng)數據庫
sqlplus internal/oracle@phj shutdown immediate startup pfile=%Oracle_Home%\database\initphj.ora
3.建立字典文件
BEGIN dbms_logmnr_d.build( dictionary_filename=>’dict.ora’, dictionary_location=>’c:\oracle\phj\logmnr’); END; /
注意:參數dictionary_filename用以指定字典文件的文件名;參數 dictionary_location用于指定存放字典文件所在的目錄,該目錄必須與初始化參數UTL_FILE_DIR的值一致。如果指定的字典文件名dict.ora已經(jīng)存在,則應在執行此操作前將其徹底刪除(從垃圾箱中刪除),否則執行該過(guò)程將失敗。
三、建立日志分析列表
建立日志分析列表必須在MOUNT或NOMOUNT狀態(tài)下完成。
1.停止并裝載數據庫
sqlplus internal/oracle@phj shutdown immediate startup mount pfile=%Oracle_Home%\database\initphj.ora
2.建立日志分析列表
在“生成歸檔日志”的操作中已經(jīng)生成了三個(gè)連續的歸檔日志文件,為便于分析我們重新復制這三個(gè)歸檔日志文件并分別命名為:test1.arc、test2.arc、test3.arc。通過(guò)以下操作建立日志分析列表:
BEGIN dbms_logmnr.add_logfile( options=>dbms_logmnr.new, logfilename=>’c:\oracle\phj\archive\test1.arc’); END; /
3.增加其它欲進(jìn)行分析的日志文件
BEGIN dbms_logmnr.add_logfile( options=>dbms_logmnr.addfile, logfilename=>’c:\oracle\phj\ archive \test2.arc’); END; /
用同樣的方法將歸檔日志文件test3.arc增加到日志分析列表中??梢酝ㄟ^(guò)動(dòng)態(tài)性能視圖v$logmnr_logs查看日志分析列表中有哪些待分析的日志文件。
SQL> select filename from v$logmnr_logs; FILENAME ---------------------------------------- c:\oracle\phj\archive\test1.arc c:\oracle\phj\archive\test2.arc c:\oracle\phj\archive\test3.arc
四、啟動(dòng)LogMiner執行分析
1.分析重做日志和歸檔日志
BEGIN dbms_logmnr.start_logmnr( dictfilename=>’c:\oracle\phj\logmnr\dict.ora’, starttime=>to_date(’2003-02-10:10:05:00’,’YYYY-MM-DD:HH24:MI:SS’), endtime=>to_date(’2003-02-10:10:17:00’,’YYYY-MM-DD:HH24:MI:SS’) ); END; /
注意:此過(guò)程能否執行成功的關(guān)鍵是給出的starttime(起始時(shí)間)和endtime(終止時(shí)間)應在一個(gè)有效的范圍內。特別是終止時(shí)間,應小于或等于歸檔日志的建立時(shí)間;如果大于歸檔日志的建立時(shí)間,則不能執行分析過(guò)程。分析多個(gè)歸檔日志時(shí),這些歸檔日志最好是連續的。
2.查看日志分析結果
上面對日志進(jìn)行分析的結果存放在動(dòng)態(tài)性能視圖v$logmnr_contents中,通過(guò)查詢(xún)該動(dòng)態(tài)性能視圖可以取得所有DML以及其反操作。
SQL> select operation,sql_redo,sql_undo 2 from v$logmnr_contents 3 where seg_name='TMP'; OPERATION SQL_REDO SQL_UNDO ----------- --------------------- -------------------------- INSERT insert into SYS.TMP…… delete from SYS.TMP …… UPDATE update SYS.TMP set NO …… update SYS.TMP set …… DELETE delete from SYS.TMP …… insert into SYS.TMP ……
根據需要可以從動(dòng)態(tài)性能視圖v$logmnr_contents中獲取更多的有用信息,限于篇幅此不贅述。對重做日志進(jìn)行分析的方法與對歸檔日志分析的方法一樣,只是在建立日志分析列表時(shí),需將重做日志文件添加到日志分析列表中。