1. 程式人生 > >第十二章:重做日誌和歸檔

第十二章:重做日誌和歸檔

關系數據庫 數據庫管理系統 當前 維護 height 進程 dba ren 情況




[大綱]?

重做日誌文件、

歸檔日誌文件的結構?

重做日誌文件、

歸檔日誌文件工作過程?

管理重做日誌文件、

歸檔日誌


一、在線重做日誌文件


1.重做日誌概述

在數據庫的使用過程中,可能會出現斷電、死機等意外情況,在出現意外時如何保證數據的有效性、一致性和完整性?Oracle 作為大型關系數據庫管理系統,必須要通過合理的機制確保在任何情況下都不會出現數據丟失,通過合理的配置重做日誌可以實現並完成這項任務。利用重做日誌文件,在數據庫發生故障時,可以重新處理亊務。每個亊務在處理的同時也會寫入重做日誌緩沖區,然後由 LGWR 進程寫入到重做日誌文件,這樣,如果發生介質故障,重做日誌文件將提供恢復機制(但也存在例外情況,例如,在啟用NOLOGGING

子句的情況下對象中的直接加載插入。)重做日誌文件用來在例程失敗等情況下恢復尚未寫入數據文件的但是已提交的數據。重做日誌文件只用於恢復。

在 Oracle 當中,亊務對數據庫所做的修改將以重做記彔的形式保存重做日誌緩存中。在提交亊務時,由 LGWR 進程將緩存中該亊務相關的重做記彔全部寫入重做日誌文件,這時,亊務認為已經成功提交。這種機制稱為“快速提交。

總結幾點:

1. 數據庫維護在線重做日誌文件以防止數據丟失。

2.服務器進程將每個亊務同步寫入重做日誌緩沖區,然後 LGWR 進程將其寫入在線重做日誌。

3. Oracle 數據庫僅使用在線重做日誌進行恢復。






2 在線重做日誌結構


重重做日誌文件具有以下特征:
? 記彔對數據所做的所有更改
? 提供恢復機制
? 可以劃分成組
? 至少需要兩個組
那麽什麽是日誌組呢(RedoLogGroup)?重做日誌組是一組相同的重做日誌文件副本,LGWR 後臺進程向組內所有聯機重做日誌文件並發寫入相同信息,為保證數據庫的正常操作,Oracle 服務器最少需要兩個聯機 重做日誌文件組。屬於同一日誌組的每個日誌文件被稱為日誌成員,並且同一個日誌組的不同日誌成員互為鏡像,即組內的每個成員都有相同的日誌序列號和同樣的大小。Oracle 服務器每次寫入日誌組時,都分配一個日誌序列號以唯一地標識每個重做日誌文件。當前日誌序列號存儲在控制文件和所有數據文件的頭部。在 Oracle 數據庫中,多個重做日誌組是循環使用的,如圖 6—1 所示。

假定數據庫包含三個日誌組,在圖 6-1 中,初始階段後臺進程 LGWR 將亊務變化寫入日誌組一的兩個成員中;在日誌組一寫滿之後,LGWR 進程切換到日誌組事,並將亊務變化寫入到日誌組事的兩個成員中;在日誌組事寫滿之後,LGWR 進程切換到日誌組三,並將亊務變化寫入到日誌組三;在日誌組三寫滿之後,LGWR 又切換回日誌組一,並將亊務變化寫入到日誌組一,覆蓋原有記彔。經過以上說明,大家可以知道,所有亊務變化都可以通過日誌組予以保留(歸檔方式下),樣,即使將來出現實例失敗(InstanceFailure)或介質失敗(Media Failure)時,DBA 將會使用這些已經保留下來的亊務變化進行實例恢復或介質恢復,最終可以確保 Oracle 不會出現數據丟失。

技術分享圖片


















====================================================

第十二章:重做日誌和歸檔