log_miner操作(日志挖掘)
Oracle LogMiner是Oracle公司從產(chǎn)品8i以后提供的一個(gè)實(shí)際非常有用的分析工具,使用該工具可以輕松獲得Oracle重做日志文件(歸檔日志文件)中的具體內(nèi)容。LogMiner分析工具實(shí)際上是由一組PL/SQL包和一些動(dòng)態(tài)視圖(Oracle8i內(nèi)置包的一部分)組成。
1、安裝LogMiner
新建包(這兩個(gè)腳本必須均以SYS管理員身份運(yùn)行):
SQL> @E:oracleproduct10.2.0db_1RDBMSADMINdbmslm.sql;
SQL> @E:oracleproduct10.2.0db_1RDBMSADMINdbmslmd.sql;
2、 創(chuàng)建LogMiner所需的數(shù)據(jù)字典文件
該字典文件是可選的,但是如果沒(méi)有它,LogMiner解釋出來(lái)的語(yǔ)句中關(guān)于數(shù)據(jù)字典中的部分(如表名、列名等)和數(shù)值都將是16進(jìn)制的形式,我們是無(wú)法直接理解的。
(1)、添加數(shù)據(jù)字典目錄:
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)、創(chuàng)建數(shù)據(jù)字典文件
SQL> EXECUTE dbms_logmnr_d.build(dictionary_filename => 'redolog.log',dictionary_location => '/u01/oracle/ora_log')
創(chuàng)建數(shù)據(jù)字典的目:讓LogMiner引用涉及到內(nèi)部數(shù)據(jù)字典中的部分時(shí)為他們實(shí)際的名字,而不是系統(tǒng)內(nèi)部的16進(jìn)制。
3、添加日志文件
但這里建議最好是每次只添加一個(gè)需要分析的日志文件,在對(duì)該文件分析完畢后,再添加另外的文件。
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');
--生成分析日志臨時(shí)表,以便session斷開(kāi)時(shí)用其他用戶(hù)也能查看
create table logmnr_contents as select * from v$logmnr_contents ;
--終止日志分析事務(wù)
execute dbms_logmnr.end_logmnr;
不完全分析舉例:
--限制起始時(shí)間和終止時(shí)間參數(shù):(注意時(shí)間參數(shù)要合理,否則會(huì)出ORA-01291錯(cuò))
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、查看分析結(jié)果
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 特定數(shù)據(jù)變化的系統(tǒng)更改號(hào),可用 select dbms_flashback.get_system_change_number from dual; 獲得當(dāng)前改變號(hào)。
TIMESTAMP 數(shù)據(jù)改變發(fā)生的時(shí)間
COMMIT_TIMESTAMP 數(shù)據(jù)改變提交的時(shí)間
SEG_OWNER 段的所有者名稱(chēng)
SEG_NAME 數(shù)據(jù)發(fā)生改變的段名稱(chēng)
SEG_TYPE 數(shù)據(jù)發(fā)生改變的段類(lèi)型
SEG_TYPE_NAME 數(shù)據(jù)發(fā)生改變的段類(lèi)型名稱(chēng)
TABLE_SPACE 變化段的表空間
ROW_ID 特定數(shù)據(jù)變化行的ID
SESSION_INFO 數(shù)據(jù)發(fā)生變化時(shí)用戶(hù)進(jìn)程信息,如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語(yǔ)句
SQL_UNDO 可以為重做記錄回退或恢復(fù)指定行變化的SQL語(yǔ)句
<轉(zhuǎn)>http://blog.itpub.net/23463019/viewspace-1042565/
轉(zhuǎn)載于:https://www.cnblogs.com/beliefer/p/4911026.html
總結(jié)
以上是生活随笔為你收集整理的log_miner操作(日志挖掘)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JAVA设计模式--辛格尔顿
- 下一篇: Cassandra - Insert a