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