轉(zhuǎn)載:
Logminer是每個Dba都應(yīng)熟悉的工具,當(dāng)一天由于用戶的誤操作你需要做不完全的恢復(fù)時,由于你無法確定這個操作是哪個時間做的,所以這對你的恢復(fù)就帶來的很大的難度,丟失的數(shù)據(jù)也不能完全恢復(fù)回來。而LogMiner就可以幫你確定這個誤操作的準(zhǔn)確時間。
測試環(huán)境是Aix4.3.3的操作系統(tǒng),Oracle9.2.0.3的測試庫。
一、LogMiner的幾點(diǎn)說明
1、LogMiner可以幫你確定在某段時間所發(fā)的各種DML,DDL操作的具體時間和SCN號,它所依據(jù)的是歸檔日志文件及聯(lián)機(jī)日志文件。
2、它只能在Oracle8i及以后的版本中使用,不過它可以分析Oracle8的日志。
3、Oracle8i只能用于分析DML操作,到Oracle9i則可以分析DDL操作了。
4、LogMiner不支持索引組織表、Long、LOB及集合類型。
5、MTS的環(huán)境也不能使用LogMiner.
二、操作步驟
1、設(shè)定用于LogMiner分析的數(shù)據(jù)文件存放的位置
這是設(shè)定utl_file_dir參數(shù)的過程,我的示例:
a、在initctc.ora文件中加入如下一行
utl_file_dir=/u01/arch
b、得啟數(shù)據(jù)庫
oracle>sqlplus /nolog
sql>conn / as sysdba
sql>shutdown immediate
sql>statup
2、生成數(shù)據(jù)字典文件,是通過dbms_logmnr_d.build()來完成。
SQL> BEGIN
2 dbms_logmnr_d.build(
3 dictionary_filename => 'logminer_dict.dat',
4 dictionary_location => '/u01/arch'
5 );
6 END;
7 /
dictionary_location指的是Logminer數(shù)據(jù)字典文件存放的位置,它必須匹配utl_file_dir的設(shè)定。
其中的dictionary_filename指的是放于存放位置的字典文件的名字,名字可以任意取。
3、建立一個日志分析表
a、建立日志分析表數(shù)據(jù)庫必須在mount或nomount狀態(tài),啟動數(shù)據(jù)庫到mount狀態(tài)。
sqlplus /nolog
sql>conn / as sysdba
sql>shutdown immediate
sql>starup mount
b、建立日志分析表,使用dbms_logmnr.add_logfile()
SQL> BEGIN
2 dbms_logmnr.add_logfile(
3 options => dbms_logmnr.new,
4 logfilename => '/u01/arch/arc_ctc_0503.arc'
5 );
6 END;
7 /
其中的options有三種取值,dbms_logmnr.new用于建一個日志分析表;dbms_logmnr.addfile用于加入用于分析的的日志文件;dbms_logmnr.removefile用于移出用于分析的日志文件。
4、添加用于分析的日志文件。
SQL> BEGIN
2 dbms_logmnr.add_logfile(
3 options => dbms_logmnr.addfile,
4 logfilename => '/u01/arch/arc_ctc_0504.arc'
5 );
6 END;
7 /
使用則可以把這個文件從日志分析表中移除,從而不進(jìn)行分析。
SQL> BEGIN
2 dbms_logmnr.add_logfile(
3 options => dbms_logmnr.removefile,
4 logfilename => '/u01/arch/arc_ctc_0503.arc'
5 );
6 END;
7 /
5、啟動LogMiner進(jìn)行分析。
SQL> BEGIN
2 dbms_logmnr.start_logmnr(
3 dictfilename => '/u01/arch/logminer_dict.dat',
4 starttime => to_date('20030501 12:15:00','yyyymmdd hh24:mi:ss'),
5 endtime => to_date('20030501 15:40:30','yyyymmdd hh24:mi:ss')
6 );
7 END;
8 /
即分析2003年5月1日這天12:15至15:40這段時間,并把分析結(jié)果放到數(shù)據(jù)字典中以用于查詢。還有兩個參數(shù)StartScn(起始scn號)及EndScn(終止Scn)號。
6、查看日志分析的結(jié)果,通過查詢v$logmnr_contents可以查詢到
a、查看DML操作,示例:
SELECT operation,
sql_redo,
sql_undo,
FROM V$logmnr_contents
WHERE seg_name = 'QIUYB';
OPERATION SQL_REDO SQL_UNDO
---------- -------------------------- --------------------------
INSERT inser into qiuyb.qiuyb ... delete from qiuyb.qiuyb...
其中operation指的是操作,sql_redo指的是實(shí)際的操作,sql_undo指的是用于取消的相反的操作。
b、查看DDL操作,示例:
SELECT timstamp,
sql_redo
FROM v$logmnr_contents
WHERE upper(sql_redo) like '%TRUNCATE%';
7、結(jié)束LogMiner的分析。
SQL>BEGIN
2 dbms_logmnr.end_logmnr;
3 end;
4 /
三、與LogMiner相關(guān)的數(shù)據(jù)字典。
1、v$loglist 它用于顯示歷史日志文件的一些信息
2、v$logmnr_dictionary 因logmnr可以有多個字典文件,該視圖用于顯示這方面信息。
3、v$logmnr_parameters 它用于顯示logmnr的參數(shù)
4、v$logmnr_logs 它用于顯示用于分析的日志列表信息。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。