log_miner操作(日志挖掘)
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語句
<轉>http://blog.itpub.net/23463019/viewspace-1042565/
轉載于:https://www.cnblogs.com/beliefer/p/4911026.html
總結
以上是生活随笔為你收集整理的log_miner操作(日志挖掘)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA设计模式--辛格尔顿
- 下一篇: Cassandra - Insert a