天天看點

重做日志檔案

1、重做日志檔案的作用:用于記錄資料所作的所有更改,提供恢複機制;

2、重做日志檔案的結構:

一組相同的聯機重做日志檔案副本稱為聯機重做日志檔案組,lgwr背景程序向組内所有的聯機重做日志檔案并發寫入相同資訊;為保證資料庫的正常操作,oracle伺服器需要至少2個聯機重做日志檔案組。組内每個聯機重做日志檔案被稱為成員,有相同的日志序列号和大小;聯機重做檔案最小為50kb;

3、重做日志檔案是以循環的方式使用的;當一個重做日志檔案被寫滿,lgwr則會移動到下一個日志組,這叫日志切換;同時還将進行檢查點操作,将檢查點資訊寫入控制檔案;lgwr程序将重做條目從重做日志緩沖區寫入聯機重做日志檔案的一個組,這個組被稱為目前聯機重做日志檔案組;lgwr将在以下情況寫入:

送出事務處理時;

當重做日志緩沖區被寫滿1/3時;

當重做日志緩沖區内已更改記錄超過1m時;

dbwn将資料庫緩沖區高速緩存中修改的塊寫入資料檔案之前;

4、檢查點:

如果檢查點是由日志切換引起的,ckpt還會更新資料檔案的标頭;檢查點的發生情況如下:

每次日志切換時;

當已認證正常、事務處理或立即選項關閉例程時;

通過設定初始化參數 fast_start_mttr_target 強制執行時;

資料庫管理者通過手動方式請求時;

alter tablespace [offline normal|read only|begin backup];導緻對特定資料檔案執行檢查點操作;

如果初始化參數log_checkpoints_to_alert設定為true,則有關每個檢查點資訊都記錄在alert_sid.log内;該參數預設值為false,表示不記錄檢查點;

5、強制執行日志切換和檢查點:

alter system switch logfiles;強制執行日志切換

fast_start_mttr_target=…;強制執行檢查點操作,例程恢複所用操作不應超過…秒

6、對聯機重做日志檔案的多元備份:

添加聯機重做日志檔案組:

重做日志檔案

添加聯機重做日志檔案成員:

重做日志檔案

删除聯機重做日志檔案:

若要增大或者減小聯機重做日志檔案組的大小,須建立聯機重做日志檔案組,再删除舊組;無法删除活動組或目前組;

删除聯機重做日志檔案組:

如果要删除的成員是組内最後一個有效的成員,則不能删除;如果該組為目前組,則必須先強制執行日志切換,才能删除該組成員;如果資料庫正運作在archivelog模式下且未将該日志檔案組歸檔,則不能删除該成員;

重定位或重命名聯機重做日志檔案:

oracle伺服器僅更改控制檔案内的指針,不從實體上重命名或建立任何作業系統檔案;

7、擷取聯機重做日志的資訊:v$log(聯機重做日志狀态資訊的視圖)、v$logfiles(日志檔案狀态資訊視圖,擷取組内所有成員的名稱)

重做日志檔案

其中,status的狀态有以下幾種:

unused:剛添加的聯機重做日志檔案組,尚未對其進行寫入;

current:目前的聯機重做日志檔案組,表示其也是活動的;

active:表示聯機重做日志檔案組是活動的,但不是目前的;它可能已經歸檔了,也可能未歸檔;崩潰恢複時需要該狀态,可用于塊恢複;

inactive:例程恢複不再需要聯機重做日志檔案組;可能歸檔了,也可能未歸檔;

clearing:表示在執行alter database clear logfile指令後,将該日志重建為一個空的日志,日志清除後,其狀态為unused;

clearing_current:表示清除目前日志中已經關閉的線程;如果日志切換時發生某些故障,則日志可能處于此種狀态;

重做日志檔案

status的值可為:

invalid:該檔案不可通路;

stale:檔案内容不完全;

deleted:該檔案已不再使用;

空白表示檔案正在使用中;

8、歸檔的重做日志檔案:

資料庫配置的選擇:archivelog模式下和noarchivelog模式下

歸檔聯機重做日志檔案的方式有手動和自動(建議);log_archive_start參數表明instance啟動時,手動還是自動歸檔;如果為true,則是自動歸檔,arcn在每次日志切換時将已滿日志進行歸檔;如果為false(預設),則是手動歸檔;dba必須手動執行一條指令對所有或特定的聯機重做日志檔案進行歸檔。

擷取歸檔日志的資訊如下:

重做日志檔案

繼續閱讀