2、創(chuàng )建要分析的日志文件列表 iW%}@ye=k
ROVY1/BE
Oracle的重作日志分為兩種,在線(xiàn)(online)和離線(xiàn)(offline)歸檔日志文件,下面就分別來(lái)討論這兩種不同日志文件的列表創(chuàng )建。 %ui:,lH
3O _[4#
?。?)分析在線(xiàn)重作日志文件 cH4Lwd[&N
V9Z b IU
A. 創(chuàng )建列表 >SD'?%av|
% I FHk2n
SQL> EXECUTE dbms_logmnr.add_logfile( )tDx@kT1qq
LogFileName=>' e:Oracleoradatasxfredo01.log', O[l{$ X}
Options=>dbms_logmnr.new); I2c1X<&H
A" 0bBr
B. 添加其他日志文件到列表 W0fZ"c..
Fd{?LxT
SQL> EXECUTE dbms_logmnr.add_logfile( -DL0%/BV
LogFileName=>' e:Oracleoradatasxfredo02.log', }zZ1BLeV&M
Options=>dbms_logmnr.addfile); ~cg$}[
l .KCF.>g
?。?)分析離線(xiàn)日志文件 vrQgHF-#
MnH}3b]
A.創(chuàng )建列表 [/$kIh n
7~^6tS0'i
SQL> EXECUTE dbms_logmnr.add_logfile( `5&L58"-
LogFileName=>' E:OracleoradatasxfarchiveARCARC09108.001', TU#YN3<n!&
Options=>dbms_logmnr.new); %7d,7
>&. _/
B.添加另外的日志文件到列表 # ;TG$xX;
/;1Z1^],G
SQL> EXECUTE dbms_logmnr.add_logfile( y!isEE
LogFileName=>' E:OracleoradatasxfarchiveARCARC09109.001', lmP,:tb<
Options=>dbms_logmnr.addfile); $vpt_T/
!d#xt
關(guān)于這個(gè)日志文件列表中需要分析日志文件的個(gè)數完全由你自己決定,但這里建議最好是每次只添加一個(gè)需要分析的日志文件,在對該文件分析完畢后,再添加另外的文件。 A4aBB#3p
#%@q`,J=i
和添加日志分析列表相對應,使用過(guò)程 'dbms_logmnr.removefile' 也可以從列表中移去一個(gè)日志文件。下面的例子移去上面添加的日志文件e:Oracleoradatasxfredo02.log。 aop:!-
Vvu}Stf/{
SQL> EXECUTE dbms_logmnr.add_logfile( C|>3J>^
LogFileName=>' e:Oracleoradatasxfredo02.log', aHIupw
Options=>dbms_logmnr. REMOVEFILE); P)G84/G
aNEJ"
創(chuàng )建了要分析的日志文件列表,下面就可以對其進(jìn)行分析了。 huP-I`
3、使用LogMiner進(jìn)行日志分析 h1fCyJ9u7
k{nk: xd
?。?)無(wú)限制條件 HwR4n%Km}
dpC2k.8mA
SQL> EXECUTE dbms_logmnr.start_logmnr( ,~(vCr?
DictFileName=>' e:oraclelogs v816dict.ora '); GlS`L
UiuL8?`
?。?)有限制條件 1=bn5N
1"2IbiP<5]
通過(guò)對過(guò)程DBMS_ LOGMNR.START_LOGMNR中幾個(gè)不同參數的設置(參數含義見(jiàn)表1),可以縮小要分析日志文件的范圍。通過(guò)設置起始時(shí)間和終止時(shí)間參數我們可以限制只分析某一時(shí)間范圍的日志。如下面的例子,我們僅僅分析2001年9月18日的日志,: 6,G~`PKf
QH|:$y
SQL> EXECUTE dbms_logmnr.start_logmnr( /`F;zDUXn
DictFileName => ' e:oraclelogs v816dict.ora ', ]fr~5sM
StartTime => to_date('2001-9-18 00:00:00','YYYY-MM-DD HH24:MI:SS') qM@Jd A
EndTime => to_date(''2001-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS ')); WmduCe#yn
]x*TB<tr
也可以通過(guò)設置起始SCN和截至SCN來(lái)限制要分析日志的范圍: +[R;}*6>
xl$>R
SQL> EXECUTE dbms_logmnr.start_logmnr( tsaQGU
DictFileName => ' e:oraclelogs v816dict.ora ', sr_l:M'
StartScn => 20, I&k,)RU
EndScn => 50); ABRRhQ
IBVOSy85
表1 DBMS_LOGMNR.START__LOGMNR過(guò)程參數含義 .fwTv?1
n@gIjxC~
參數 參數類(lèi)型 默認值 含義 w&, u1J
StartScn 數字型(Number) 0 分析重作日志中SCN≥StartScn日志文件部分 a2ax1 "
EndScn 數字型(Number) 0 分析重作日志中SCN≤EndScn日志文件部分 sb'% N;n
StartTime 日期型(Date) 1998-01-01 分析重作日志中時(shí)間戳≥StartTime的日志文件部分 'A# }<@
EndTime 日期型(Date) 2988-01-01 分析重作日志中時(shí)間戳≤EndTime的日志文件部分 @K[nL ,
DictFileName 字符型(VARCHAR2) 字典文件,該文件包含一個(gè)數據庫目錄的快照。使用該文件可以使得到的分析結果是可以理解的文本形式,而非系統內部的16進(jìn)制 4zkc_NEl!
Options BINARY_INTEGER 0 系統調試參數,實(shí)際很少使用 ~}(~#QEkh
E sZ`&
]"0ft&wS
~<I$uEh*U
4、觀(guān)察分析結果(v$logmnr_contents) 3|.5=K-
DBb<4
到現在為止,我們已經(jīng)分析得到了重作日志文件中的內容。動(dòng)態(tài)性能視圖v$logmnr_contents包含LogMiner分析得到的所有的信息。 #2e:|E3
w^Vj5 ;)
SELECT sql_redo FROM v$logmnr_contents; .tu!;qD ;
q*9xh7|&
如果我們僅僅想知道某個(gè)用戶(hù)對于某張表的操作,可以通過(guò)下面的SQL查詢(xún)得到,該查詢(xún)可以得到用戶(hù)DB_ZGXT對表SB_DJJL所作的一切工作。 ~59|0Qg&!
!BBn '
SQL> SELECT sql_redo FROM v$logmnr_contents WHERE username='DB_ZGXT' AND tablename='SB_DJJL'; cfJuQ:Pz
<BwUhn
需要強調一點(diǎn)的是,視圖v$logmnr_contents中的分析結果僅在我們運行過(guò)程'dbms_logmrn.start_logmnr'這個(gè)會(huì )話(huà)的生命期中存在。這是因為所有的LogMiner存儲都在PGA內存中,所有其他的進(jìn)程是看不到它的,同時(shí)隨著(zhù)進(jìn)程的結束,分析結果也隨之消失。 TmP Y{>XB
D*k!.)2{&
最后,使用過(guò)程DBMS_LOGMNR.END_LOGMNR終止日志分析事務(wù),此時(shí)PGA內存區域被清除,分析結果也隨之不再存在。 O3=(%
f#kNu{h5
四、其他注意事項 UPJ9Df9$K
,3i!et
我們可以利用LogMiner日志分析工具來(lái)分析其他數據庫實(shí)例產(chǎn)生的重作日志文件,而不僅僅用來(lái)分析本身安裝LogMiner的數據庫實(shí)例的redo logs文件。使用LogMiner分析其他數據庫實(shí)例時(shí),有幾點(diǎn)需要注意: [.<$@o/
xmJ 9
1. LogMiner必須使用被分析數據庫實(shí)例產(chǎn)生的字典文件,而不是安裝LogMiner的數據庫產(chǎn)生的字典文件,另外必須保證安裝LogMiner數據庫的字符集和被分析數據庫的字符集相同。 @!#Q%*o-(i
@H55fA
2. 被分析數據庫平臺必須和當前LogMiner所在數據庫平臺一樣,也就是說(shuō)如果我們要分析的文件是由運行在UNIX平臺上的Oracle 8i產(chǎn)生的,那么也必須在一個(gè)運行在UNIX平臺上的Oracle實(shí)例上運行LogMiner,而不能在其他如Microsoft NT上運行LogMiner。當然兩者的硬件條件不一定要求完全一樣。 k3Xfn>
4 uL>99Q
3. LogMiner日志分析工具僅能夠分析Oracle 8以后的產(chǎn)品,對于8以前的產(chǎn)品,該工具也無(wú)能為力。 yHfm1Z#S5m
9ZBEw<d
五、結語(yǔ) c8Kp=k2E
${'nfY8n
LogMiner對于數據庫管理員(DBA)來(lái)講是個(gè)功能非常強大的工具,也是在日常工作中經(jīng)常要用到的一個(gè)工具,借助于該工具,可以得到大量的關(guān)于數據庫活動(dòng)的信息。其中一個(gè)最重要的用途就是不用全部恢復數據庫就可以恢復數據庫的某個(gè)變化。另外,該工具還可用來(lái)監視或者審計用戶(hù)的活動(dòng),如你可以利用LogMiner工具察看誰(shuí)曾經(jīng)修改了那些數據以及這些數據在修改前的狀態(tài)。我們也可以借助于該工具分析任何Oracle 8及其以后版本產(chǎn)生的重作日志文件。另外該工具還有一個(gè)非常重要的特點(diǎn)就是可以分析其他數據庫的日志文件??傊?,該工具對于數據庫管理員來(lái)講,是一個(gè)非常有效的工具,深刻理解及熟練掌握該工具,對于每一個(gè)數據庫管理員的實(shí)際工作是非常有幫助的。

