Oracle恢複內部原理簡介

來源:互聯網
上載者:User

Oracle 7 v7.2 恢複大綱

作者:Andrea Borr  & Bill Bridge

版本:1                May 3, 1995

本文概述了Oracle 7.2版本如何進行資料庫恢複。本文讀者應當熟悉Oracle 7.2的管理指南。相比於管理指南,本文目的是為了更詳細描述Oracle恢複用到的演算法、資料結構以及一些技術細節。

一、簡介

Oracle資料庫提供了下列兩類失敗模式下的資料庫恢複:

1.  執行個體失敗:丟失了Oracle資料緩衝中的資料或者記憶體中的資料

2.  介質失敗:丟失了資料庫檔案

上面兩種模式的任一種失敗情景,在恢複的時候想要保證資料庫一致性,都有一些前提條件必須滿足。

雖然恢複的過程有一些共同點,但前提條件的差異使得恢複的執行也有很大差異:

1.  執行個體恢複:恢複Oracle資料緩衝中丟失的資料

2.  介質恢複:恢複資料庫檔案丟失的資料

1.1  執行個體恢複和介質恢複的共同的機制

執行個體恢複和介質恢複都依賴重做日誌。重做日誌由一些重做日誌線程組成。單一實例環境中重做日誌只有一個重做線程,並行伺服器環境中每個執行個體都有一個重做線程。

一個重做日誌線程指的的是一組存放在作業系統上的檔案,檔案裡記錄了該執行個體對資料庫的所有變更——已提交的變更和未提交的變更(後者指還存在Oracle資料緩衝區中的資料區塊變更)。因為執行個體也修改了復原段中的塊,所以復原段的變更也記錄在重做日誌線程中。

  執行個體恢複和介質恢複的第一步都是前滾。前滾屬於資料庫恢複層面的。在前滾的過程中,重做日誌中記錄的資料變更被重新應用到資料檔案中。因為復原段的變更也記錄在重做日誌中,所以前滾過程還會重新構建復原段塊。當前滾結束時,重做日誌中記錄的所有變更都應用到資料檔案上了。此刻,資料區塊不僅包含了已經提交的資料,也包含了一些未提交的資料。

執行個體恢複和介質恢複的第二步就是復原。復原屬於資料庫事務層的任務。復原過程中,復原段中記錄的由前滾導致的未提交的事務所做的修改將被撤銷。

1.2  執行個體失敗和恢複,崩潰失敗和恢複

執行個體失敗指當執行個體突然終止時(如因為shutdown abort或主機掉電),執行個體資料緩衝中的內容就都丟失了。

崩潰失敗指資料庫的所有執行個體都同時失敗。單一實例環境中執行個體失敗等同於崩潰失敗。崩潰恢複指的是將所有執行個體都恢複到崩潰前的一致狀態。這一切都是在命令alter database open 之後自動進行的,使用者無法幹預。

執行個體失敗會損害資料庫的一致性因為它導致該執行個體的髒資料丟失。所謂“髒資料”就是指執行個體資料緩衝中的資料區塊內容比資料檔案上的要新。當執行個體崩潰時,還沒有來得及將髒資料寫入到資料檔案中。之所以導致存在這個髒資料丟失問題是因為Oracle的緩衝管理採用的是有利於交易處理效能的演算法而不是有利於防止執行個體崩潰的。如下這些有利於效能調優的緩衝管理演算法使得執行個體恢複過程有點複雜:

1.  LRU(最近最少使用)緩衝替換演算法

2.  提交時不強制將髒資料重新整理到資料檔案中

    上面的演算法導致執行個體失敗時對資料庫完整性的損害體現在如下幾點:

A.  在執行個體崩潰時,資料檔案中可能包含一個原子事務修改的所有塊中的部分塊而不是全部

B.  在執行個體崩潰時,資料檔案中可能包含一些未提交事務修改的塊

C.  在執行個體崩潰時,一些已提交事務修改的塊可能還沒有重新整理到資料檔案中,資料檔案中包含的是該事務修改之前的資料區塊。

在執行個體恢複過程中,資料庫恢複層修複了上面的損害點A和C,然後後續的資料庫事務層修複了損害點B。

除了那些用來修複資料庫完整性損害的前提條件外,執行個體恢複還需要滿足一些前提條件:

1. 執行個體恢複必須在聯機的資料檔案上進行恢複。

2. 執行個體恢複必須使用聯機重做記錄檔,不能要求使用歸檔重做記錄檔。雖然執行個體恢複也可以通過使用歸檔重做記錄檔進行恢複(資料庫運行在非歸檔模式除外),但那種恢複過程在要求使用者先還原歸檔記錄檔的的時候是不能自動進行的。

3. 執行個體恢複過程的調用是自動的,隱含的在下次資料庫啟動的時候被調用。

4. 執行個體恢複過程中偵測修複的檔案或修複過程本身都是自動進行的,無需人工幹預。

5. 執行個體恢複中前滾時間的長短是由Oracle資料庫內部機制(checkpoint)和使用者配置的參數(如記錄檔的大小和數量,checkpoint的頻率,並行恢複的參數等)決定的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.