詳談Oracle LogMiner工具
學(xué)習(xí)Oracle時(shí),經(jīng)常會(huì)遇到使用Oracle LogMiner工具問題,下面將詳細(xì)介紹如何使用Oracle LogMiner工具。
創(chuàng)建數(shù)據(jù)字典文件(data-dictionary)
Oracle LogMiner工具實(shí)際上是由兩個(gè)新的PL/SQL內(nèi)建包((DBMS_LOGMNR 和 DBMS_ LOGMNR_D)和四個(gè)V$動(dòng)態(tài)性能視圖(視圖是在利用過程DBMS_LOGMNR.START_LOGMNR啟動(dòng)LogMiner時(shí)創(chuàng)建)組成。在使用Oracle LogMiner工具分析redo log文件之前,可以使用DBMS_LOGMNR_D 包將數(shù)據(jù)字典導(dǎo)出為一個(gè)文本文件。該字典文件是可選的,但是如果沒有它,LogMiner解釋出來的語句中關(guān)于數(shù)據(jù)字典中的部分(如表名、列名等)和數(shù)值都將是16進(jìn)制的形式,我們是無法直接理解的。例如,下面的sql語句:
- INSERT INTO dm_dj_swry (rydm, rymc) VALUES (00005, '張三');
LogMiner解釋出來的結(jié)果將是下面這個(gè)樣子
- insert into Object#308(col#1, col#2) values (hextoraw('c30rte567e436'), hextoraw('4a6f686e20446f65'));
創(chuàng)建數(shù)據(jù)字典的目的就是讓LogMiner引用涉及到內(nèi)部數(shù)據(jù)字典中的部分時(shí)為他們實(shí)際的名字,而不是系統(tǒng)內(nèi)部的16進(jìn)制。數(shù)據(jù)字典文件是一個(gè)文本文件,使用包DBMS_LOGMNR_D來創(chuàng)建。如果我們要分析的數(shù)據(jù)庫(kù)中的表有變化,影響到庫(kù)的數(shù)據(jù)字典也發(fā)生變化,這時(shí)就需要重新創(chuàng)建該字典文件。另外一種情況是在分析另外一個(gè)數(shù)據(jù)庫(kù)文件的重作日志時(shí),也必須要重新生成一遍被分析數(shù)據(jù)庫(kù)的數(shù)據(jù)字典文件。
首先在init.ora初始化參數(shù)文件中,指定數(shù)據(jù)字典文件的位置,也就是添加一個(gè)參數(shù)UTL_FILE_DIR,該參數(shù)值為服務(wù)器中放置數(shù)據(jù)字典文件的目錄。如:
- UTL_FILE_DIR = (e:\Oracle\logs)
重新啟動(dòng)數(shù)據(jù)庫(kù),使新加的參數(shù)生效,然后創(chuàng)建數(shù)據(jù)字典文件:
- SQL> CONNECT SYS
- SQL> EXECUTE dbms_logmnr_d.build(
- dictionary_filename => ' v816dict.ora',
- dictionary_location => 'e:\oracle\logs');
以上介紹使用Oracle LogMiner工具。
【編輯推薦】