詳解Oracle介質恢複的內部過程

來源:互聯網
上載者:User

這個是兩年前學習Oracle總結的東西,不算什麼新東西,僅作為個人的一個記錄,也歡迎大家一起學習討論。

Oracle資料庫的介質恢複過程相對非常複雜,Oracle畢竟作為一個大系統,設計是相當複雜和龐大的。鄙人結合對controlfile,redo log,datafile等檔案的dump內容進行分析,試圖深入的瞭解Oracle的介質恢複過程。雖不能從正向瞭解內部工作機制,但是從逆向推斷也能做個大致瞭解,以此增強對Oracle的使用信心吧。

從這裡開始吧:

1,擷取media-recovery-start SCN.

檢查所有資料檔案頭,選擇最小的checkpoint SCN值作為start SCN。

假如擷取到的checkpoint SCN值在資料檔案的offline的SCN範圍內,則採用offline-end的SCN。

2,checkpoint structure檢查thread啟動數量

media-recovery SCN中的checkpoint structure檢查在該SCN點有幾個thread線程啟動了。

3,分配log buffer

為第二步中的每個啟動的thread分配log buffer。

4,開啟log檔案

--如果log檔案線上,系統將會自動開啟;

--如果已經歸檔,將會提示管理員輸入log檔案名稱。

5,分配獨佔型media recovery lock

為每個需要執行media recovery的資料檔案分配一個excusive獨佔)media recovery lock。

6,對每個資料檔案設定fuzzy bit

7,checkpoint bitvec 決定了初始啟動的thread。

8,thread線程讀取相應的redo,並應用於資料庫。

9,Media recovery發生檢查點:

--應用redo檔案過程中,需要轉換redo檔案,每當轉換時都會發生Media Recovery checkpoints。

--當資料檔案的STOP SCN達到時,也會發生Media Recovery checkpoints,資料檔案頭的checkpoint也會被推進到該值。

10,完成media checkpoint

所有的thread完成其對應的redo日誌應用,達到資料檔案的有限STOP SCN值,完成了media recovery;media recovery fuzzy bit被清除,或者叫做重設為(0x0000.00000000 day/month/year hh24:mi:ss);接著更新資料檔案頭和控制檔案,表明了資料庫整體一致。

文檔參考:記著開始時從google找到一篇介紹Oracle internal的文章作為了參考,並結合著dump檔案的內容才有此體會。要感謝一些那位“默默無聞”的作者。

原文標題:oracle介質恢複的內部過程--推斷與參考

連結:http://www.cnblogs.com/daduxiong/archive/2010/08/13/1798797.html

相關文章

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.