IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁數(shù)據(jù)庫Oracle → Oracle中用LogMiner分析重做及歸檔日志

Oracle中用LogMiner分析重做及歸檔日志

時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(1)

  LogMiner是集成在Oracle8i/Oracle9i數(shù)據(jù)庫 產(chǎn)品中的日志分析工具,通過該工具可以分析重做日志和歸檔日志中的所有事務(wù)變化,并能準(zhǔn)確地確定各種DML和DDL操作的具體時(shí)間和SCN值。對重做日志和歸檔日志進(jìn)行分析的目的是為了恢復(fù)由于執(zhí)行了誤操作而丟失的數(shù)據(jù)。

  使用LogMiner可實(shí)現(xiàn):①確定數(shù)據(jù)邏輯損壞的時(shí)間。例如,用戶執(zhí)行了DROP TABLE和TRUNCATE TABLE命令等誤操作后,使用LogMiner可以準(zhǔn)確定位執(zhí)行這些誤操作的具體時(shí)間。注意:Oracle8i只能還原DML操作,不能還原DDL操作;Oracle9i可以還原DDL以及DML操作。②跟蹤用戶執(zhí)行的事務(wù)變化操作。使用LogMiner不僅可以跟蹤用戶所執(zhí)行的各種DML操作和 DDL操作,而且還可以取得數(shù)據(jù)變化。③跟蹤表的DML操作,使用LogMiner可以跟蹤在表上所發(fā)生的所有事務(wù)變化。

  下面以O(shè)racle8i(8.1.5)for Windows 2000/NT為例說明如何使用LogMiner對重做日志和歸檔日志進(jìn)行分析。本文進(jìn)行的所有操作均在該環(huán)境下驗(yàn)證通過,文中使用的數(shù)據(jù)庫 名為phj,Oracle_sid為phj。

  一、日志操作模式

  Oracle數(shù)據(jù)庫 對日志的管理模式有兩種,即:非歸檔模式和歸檔模式。在建立或安裝Oracle數(shù)據(jù)庫 時(shí),如果沒有指定日志操作模式,則默認(rèn)為非歸檔模式(NOARCHIVELOG)。數(shù)據(jù)庫 建立之后,用戶可以根據(jù)需要修改數(shù)據(jù)庫 日志的操作模式。

  1.非歸檔模式(NOARCHIVELOG)

  非歸檔模式是指不保存重做日志的日志操作模式,這種日志操作模式只能用于保護(hù)實(shí)例失?。ㄈ缦到y(tǒng)斷電),而不能用于保護(hù)介質(zhì)失?。〝?shù)據(jù)庫 物理文件損壞)。

  非歸檔模式的工作過程如下:假設(shè)數(shù)據(jù)庫 只有兩個(gè)日志組,且當(dāng)前日志組為日志組一,日志序列號為1。當(dāng)事務(wù)變化填滿日志組一時(shí),系統(tǒng)會切換到日志組二,并且LGWR進(jìn)程將事務(wù)變化寫入該日志組,日志序列號變?yōu)?;而當(dāng)事務(wù)變化填滿日志組二時(shí),系統(tǒng)又自動切換回日志組一,此時(shí)日志序列號變?yōu)?,并且日志序列號3所對應(yīng)的事務(wù)變化會覆蓋日志序列號1所對應(yīng)的事務(wù)變化,依此類推。

  2.歸檔模式(ARCHIVELOG)

  歸檔模式是指將重做日志內(nèi)容保存到歸檔日志中的日志操作模式。在這種日志操作模式下,當(dāng)進(jìn)行日志切換時(shí)ARCH進(jìn)程會將重做日志的內(nèi)容復(fù)制到歸檔日志中。例如,假設(shè)數(shù)據(jù)庫 只包含兩個(gè)日志組,LGWR進(jìn)程首先將事務(wù)變化寫入日志組一,此時(shí)日志序列號為1;當(dāng)事務(wù)變化填滿日志組一時(shí),系統(tǒng)將自動切換到日志組二,并將事務(wù)變化寫入日志組二,此時(shí)日志序列號變?yōu)?,同時(shí)后臺進(jìn)程ARCn會將日志組一的內(nèi)容保存到歸檔日志文件1中;而當(dāng)事務(wù)變化填滿日志組二時(shí),系統(tǒng)自動切換回日志組一,并將事務(wù)變化寫入日志組一,此時(shí)日志序列號變?yōu)?,同時(shí)后臺進(jìn)程ARCn會將日志組二的內(nèi)容保存到歸檔日志文件2中,依此類推。

  3.改變?nèi)罩镜牟僮髂J綖樽詣託w檔模式

 ?、傩薷臄?shù)據(jù)庫 的參數(shù)文件,在參數(shù)文件后添加如下參數(shù):

  log_archive_start = true

  log_archive_dest_1 = "location=C:\Oracle\phj\archive"

  log_archive_format = "T%TS%S.ARC"

  說明:第一個(gè)參數(shù)在重啟數(shù)據(jù)庫 時(shí)將自動啟動ARCH進(jìn)程;第二個(gè)參數(shù)指出歸檔日志存放的位置;第三個(gè)參數(shù)說明歸檔日志的文件名格式,%T取重做線程號,%S取日志序列號;

 ?、谥貑⒉⒀b載數(shù)據(jù)庫

  sqlplus internal/oracle@phj

  shutdown immediate

  startup mount pfile=%Oracle_Home%\database\initphj.ora

  alter database archivelog

  alter database open

  4.生成歸檔日志

  下面以分析TMP表的DDL和DML操作為例,介紹使用LogMiner分析重做日志和歸檔日志的全過程。我們首先執(zhí)行以下語句在表TMP上執(zhí)行DDL以及DML操作,并生成歸檔日志:

  sqlplus internal/oracle@phj

  create table tmp(name varchar2(10),no number(3));

  alter system switch logfile;

  insert into tmp values(‘liming’,112);

  update tmp set no=200;

  commit;

  alter system switch logfile;

  delete from tmp;

  alter system switch logfile;

  通過上面的操作會產(chǎn)生三個(gè)連續(xù)的歸檔日志文件。

#p#副標(biāo)題#e#

  二、建立字典文件

  字典文件用于存放表及對象ID號之間的對應(yīng)關(guān)系。當(dāng)使用字典文件時(shí),它會在表名和對象ID號之間建立一一對應(yīng)的關(guān)系。因此需要注意,如果用戶建立了新表之后,并且將來可能會對該表進(jìn)行日志分析,那么就需要重新建立字典文件,以將其對象名及對象ID號存放到字典文件中。

  1.修改參數(shù)文件,添加參數(shù):UTL_FILE_DIR=C:\Oracle\phj\logmnr

  目錄logmnr必須事先手工建立,該目錄用于存放產(chǎn)生的字典文件,目錄名稱可以自定。

  2.重新啟動數(shù)據(jù)庫

  sqlplus internal/oracle@phj

  shutdown immediate

  startup pfile=%Oracle_Home%\database\initphj.ora

  3.建立字典文件

  BEGIN

  dbms_logmnr_d.build(

  dictionary_filename=>’dict.ora’,

  dictionary_location=>’c:\oracle\phj\logmnr’);

  END;

  /

  注意:參數(shù)dictionary_filename用以指定字典文件的文件名;參數(shù) dictionary_location用于指定存放字典文件所在的目錄,該目錄必須與初始化參數(shù)UTL_FILE_DIR的值一致。如果指定的字典文件名dict.ora已經(jīng)存在,則應(yīng)在執(zhí)行此操作前將其徹底刪除(從垃圾箱中刪除),否則執(zhí)行該過程將失敗。

  三、建立日志分析列表

  建立日志分析列表必須在MOUNT或NOMOUNT狀態(tài)下完成。

  1.停止并裝載數(shù)據(jù)庫

  sqlplus internal/oracle@phj

  shutdown immediate

  startup mount pfile=%Oracle_Home%\database\initphj.ora

  2.建立日志分析列表

  在"生成歸檔日志"的操作中已經(jīng)生成了三個(gè)連續(xù)的歸檔日志文件,為便于分析我們重新復(fù)制這三個(gè)歸檔日志文件并分別命名為:test1.arc、test2.arc、test3.arc。通過以下操作建立日志分析列表:

  BEGIN

  dbms_logmnr.add_logfile(

  options=>dbms_logmnr.new,

  logfilename=>’c:\oracle\phj\archive\test1.arc’);

  END;

  /

  3.增加其它欲進(jìn)行分析的日志文件

  BEGIN

  dbms_logmnr.add_logfile(

  options=>dbms_logmnr.addfile,

  logfilename=>’c:\oracle\phj\ archive \test2.arc’);

  END;

#p#副標(biāo)題#e#

  用同樣的方法將歸檔日志文件test3.arc增加到日志分析列表中??梢酝ㄟ^動態(tài)性能視圖v$logmnr_logs查看日志分析列表中有哪些待分析的日志文件。

  SQL> select filename from v$logmnr_logs;

  FILENAME

  ----------------------------------------

  c:\oracle\phj\archive\test1.arc

  c:\oracle\phj\archive\test2.arc

  c:\oracle\phj\archive\test3.arc

  四、啟動LogMiner執(zhí)行分析

  1.分析重做日志和歸檔日志

  BEGIN

  dbms_logmnr.start_logmnr(

  dictfilename=>’c:\oracle\phj\logmnr\dict.ora’,

  starttime=>to_date(’2003-02-10:10:05:00’,’YYYY-MM-DD:HH24:MI:SS’),

  endtime=>to_date(’2003-02-10:10:17:00’,’YYYY-MM-DD:HH24:MI:SS’)

  );

  END;

  /

  注意:此過程能否執(zhí)行成功的關(guān)鍵是給出的starttime(起始時(shí)間)和 endtime(終止時(shí)間)應(yīng)在一個(gè)有效的范圍內(nèi)。特別是終止時(shí)間,應(yīng)小于或等于歸檔日志的建立時(shí)間;如果大于歸檔日志的建立時(shí)間,則不能執(zhí)行分析過程。分析多個(gè)歸檔日志時(shí),這些歸檔日志最好是連續(xù)的。

  2.查看日志分析結(jié)果

  上面對日志進(jìn)行分析的結(jié)果存放在動態(tài)性能視圖v$logmnr_contents中,通過查詢該動態(tài)性能視圖可以取得所有DML以及其反操作。

  SQL> select operation,sql_redo,sql_undo

  2 from v$logmnr_contents

  3 where seg_name='TMP';

  OPERATION SQL_REDO SQL_UNDO

  ----------- --------------------- --------------------------

  INSERT insert into SYS.TMP…… delete from SYS.TMP ……

  UPDATE update SYS.TMP set NO …… update SYS.TMP set ……

  DELETE delete from SYS.TMP …… insert into SYS.TMP ……

  根據(jù)需要可以從動態(tài)性能視圖v$logmnr_contents中獲取更多的有用信息,限于篇幅此不贅述。對重做日志進(jìn)行分析的方法與對歸檔日志分析的方法一樣,只是在建立日志分析列表時(shí),需將重做日志文件添加到日志分析列表中。

關(guān)鍵詞標(biāo)簽:Oracle,LogMiner

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實(shí)例的控制文件 誤刪Oracle數(shù)據(jù)庫實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索 為UNIX服務(wù)器設(shè)置Oracle全文檢索

相關(guān)下載

    人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法