2014-08-19 BaoXinjian
一、摘要
Oracle LogMiner 是一個非常有用並且完全免費的分析工具,可輕松獲得Oracle 重做日志文件(歸檔日志文件)中的具體內容,它是由一組PL/SQL包和一些動態視圖組成。
日志文件中存放著所有進行數據庫恢復的數據,記錄了針對數據庫結構的每一個變化,也就是對數據庫操作的所有DML語句。
Logminer工具即可以用來分析在線,也可以用來分析離線日志文件,即可以分析本身自己數據庫的重作日志文件,也可以用來分析其他數據庫的重作日志文件。
1. 主要用途:
2. 兩個重要package
3. 四個重要視圖
4. DBMS_LOGMNR.start_logmnr可定義參數區分分析的范圍
二、案例 - 創建測試表並塞入資料分析重做日志是否記錄
1. 安裝LogMiner
要安裝logminer工具,必須首先要運行下面這樣三個腳本
SQL> @$ORACLE_HOME/rdbms/admin/dbmslm.sql SQL> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql SQL> @$ORACLE_HOME/rdbms/admin/dbmslms.sql
這兩個腳本必須均以SYS用戶身份運行。其中第一個腳本用來創建DBMS_LOGMNR包,該包用來分析日志文件。第二個腳本用來創建DBMS_LOGMNR_D包,該包用來創建數據字典文件。
創建完畢後將包括如下過程和視圖:
2. 創建數據字典文件
CREATE DIRECTORY utlfile AS '/opt/oracle/oradata/gavinsit/logmnr' alter system set utl_file_dir='/opt/oracle/oradata/gavinsit/logmnr' scope=spfile; 重啟
LogMiner工具實際上是由兩個新的PL/SQL內建包((DBMS_LOGMNR 和 DBMS_ LOGMNR_D)和四個V$動態性能視圖(視圖是在利用過程DBMS_LOGMNR.START_LOGMNR啟動LogMiner時創建)組成。
在使用LogMiner工具分析redo log文件之前,可以使用DBMS_LOGMNR_D 包將數據字典導出為一個文本文件。
該字典文件是可選的,但是如果沒有它,LogMiner解釋出來的語句中關於數據字典中的部分(如表名、列名等)和數值都將是16進制的形式,我們是無法直接理解的
3. 查看數據庫中的重做日志
4. 創建表,並增加一筆記錄,通過分析,查看是否存在在重做日志中,並確認SCN
5. 加入需分析的日志文件,使用LogMiner進行日志分析
BEGIN DBMS_LOGMNR_D.build ( dictionary_filename => 'dictionary.ora', dictionary_location => '/opt/oracle/oradata/gavinsit/logmnr' ); DBMS_LOGMNR.add_logfile ('/opt/oracle/oradata/gavinsit/redo01.log', DBMS_LOGMNR.NEW); DBMS_LOGMNR.add_logfile ('/opt/oracle/oradata/gavinsit/redo02.log', DBMS_LOGMNR.ADDFILE); DBMS_LOGMNR.add_logfile ('/opt/oracle/oradata/gavinsit/redo03.log', DBMS_LOGMNR.ADDFILE); DBMS_LOGMNR.start_logmnr ( DictFileName => '/opt/oracle/oradata/gavinsit/logmnr/dictionary.ora' ); END;
6. 查看動態視圖結果
6.1 查看數據字典文件
6.2 查看分析參數
6.3 查看分析的日志文件
6.4 追溯到創建表的sql
6.5 追溯到插入數據的sql
insert into "SYS"."OBJ$"("OBJ#","DATAOBJ#","OWNER#","NAME","NAMESPACE","SUBNAME","TYPE#","CTIME","MTIME","STIME","STATUS","REMOTEOWNER","LINKNAME","FLAGS","OID$","SPARE1","SPARE2","SPARE3","SPARE4","SPARE5","SPARE6") values ('78204','78204','0','BXJ_TEST_LOGMINER','1',NULL,'2',TO_DATE('18-AUG-14', 'DD-MON-RR'),TO_DATE('18-AUG-14', 'DD-MON-RR'),TO_DATE('18-AUG-14', 'DD-MON-RR'),'1',NULL,NULL,'0',NULL,'6','1','0',NULL,NULL,NULL);
7. 取消分析
execute dbms_logmnr.end_logmnr;
********************作者:鮑新建********************
參考: http://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm
兄弟,
oracle歸檔日志文件是二進制文件.
我們無法按正常的方式進行查看/修改這類文件.
建議你不要動它.
簡單的說重做日記記錄了oracle的dmlddl產生的改變,當數據庫運行在歸檔模式下.
每當重做日志寫滿或手工/自動日志切換時,會將重做日志進行歸檔產生歸檔日志.
本質上說,歸檔日志和重做日志內容一樣,
重做日志數量是根據日志組定義的,多個重做日志循環寫/覆蓋寫入;而歸檔日志一經歸檔就不會被重寫/覆蓋.
歸檔日志用來恢復數據庫使用.
歸檔和重做日志都可以使用logminer進行分析,幫助查看數據庫變化和恢復.