log miner操作(日誌挖掘)

2022-09-20 00:45:16 字數 3103 閱讀 9186

oracle logminer是oracle公司從產品8i以後提供的乙個實際非常有用的分析工具,使用該工具可以輕鬆獲得oracle重做日誌檔案(歸檔日誌檔案)中的具體內容。logminer分析工具實際上是由一組pl/sql包和一些動態檢視(oracle8i內建包的一部分)組成。

1、安裝logminer

新建包(這兩個指令碼必須均以sys管理員身份執行):

sql> @e:oracleproduct10.2.0db_1rdbmsadmindbmslm.sql;

sql> @e:oracleproduct10.2.0db_1rdbmsadmindbmslmd.sql;

2、 建立logminer所需的資料字典檔案

該字典檔案是可選的,但是如果沒有它,logminer解發布來的語句中關於資料字典中的部分(如表名、列名等)和數值都將是16進製制的形式,我們是無法直接理解的。

(1)、新增資料字典目錄:

sql> connect system/oracle as sysdba;

sql> show parameter utl_file;

sql> alter system set utl_file_dir='/u01/oracle/ora_log' scope=spfile;

sql> shutdown immediate

sql> startup

(2)、建立資料字典檔案

sql> execute dbms_logmnr_d.build(dictionary_filename => 'redolog.log',dictionary_location => '/u01/oracle/ora_log')

建立資料字典的目:讓logminer引用涉及到內部資料字典中的部分時為他們實際的名字,而不是系統內部的16進製制。

3、新增日誌檔案

但這裡建議最好是每次只新增乙個需要分析的日誌檔案,在對該檔案分析完畢後,再新增另外的檔案。

execute dbms_logmnr.add_logfile(logfilename=>'/u01/oracle/oradata/test/redo01.log',options=>dbms_logmnr.new);

execute dbms_logmnr.add_logfile(logfilename=>'/u01/oracle/oradata/test/redo01.log',options=>dbms_logmnr.addfile);

execute dbms_logmnr.add_logfile(logfilename=>'/u01/oracle/oradata/testredo03.log',options=>dbms_logmnr.addfile);

execute dbms_logmnr.add_logfile(logfilename=>'/u01/oracle/oradata/test/redo01.log',options=>dbms_logmnr.removefile);

4、 分析日誌

execute dbms_logmnr.start_logmnr(dictfilename=>'/u01/oracle/ora_log/redolog.log');

--生成分析日誌臨時表,以便session斷開時用其他使用者也能檢視

create table logmnr_contents as select * from v$logmnr_contents ;

--終止日誌分析事務

execute dbms_logmnr.end_logmnr;

不完全分析舉例:

--限制起始時間和終止時間引數:(注意時間引數要合理,否則會出ora-01291錯)

execute dbms_logmnr.start_logmnr( dictfilename => 'e:oracleora_logredolog.log',starttime => to_date('2009-12-1 15:10:00','yyyy-mm-dd hh24:mi:ss'), endtime => to_date('2010-02-8 15:16:59','yyyy-mm-dd hh24:mi:ss'));

--限制起始scn和截止scn

exec dbms_logmnr.start_logmnr(dictfilename => 'e:oracleora_logredolog.log',startscn => 4140835823,endscn => 4140836247);

5、檢視分析結果

select timestamp, sql_redo

from sys.logmnr_contents

where upper(sql_redo) like '%create%';

select session_info, sql_redo

from sys.logmnr_contents

where upper(operation) = 'update'

and upper(sql_redo) like '%service%';

6、v$logmnr_contents主要字段解釋

scn 特定資料變化的系統更改號,可用 select dbms_flashback.get_system_change_number from dual; 獲得當前改變號。

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 

name=sqlplus@itdb

(tns v1-v3)

operation 重做記錄中記錄的操作(如insert)

sql_redo 可以為重做記錄重做指定行變化的sql語句

sql_undo 可以為重做記錄回退或恢復指定行變化的sql語句

《轉》

LogMiner步驟 記一次日誌挖掘的測試

1 進行初始化設定 開啟附加日誌,設定logminer的表空間,設定utl file dir引數的值 sql create directory utlfile as d oracle oradata practice logmnr sql alter system set utl file dir ...

使用logminer分析oracle日誌檔案

使用 logminer 分析oracle 日誌檔案 日誌檔案中存放著所有進行資料庫恢復的資料,記錄了針對資料庫結構的每乙個變化,也就是對資料庫操作的所有 dml語句。logminer 1,檢視資料庫的操作記錄 2 對使用者的操作進行回退,特別是在沒有備份的情況下 dbms logmnr d 包 用於...

使用 logminer 工具分析日誌

1 開啟歸檔 sql alter database archivelog 2 執行指令碼安裝logminer 建立dbms logmnr包,用來分析歸檔日誌 sql oracle home rdbms admin dbmslm.sql 用來建立dbms logmnr d包,該包用來建立資料字典檔案。...