Oracle恢複內部原理:重做日誌

來源:互聯網
上載者:User

重做日誌描述了對資料區塊的所有變更。這一節主要描述資料庫開啟的時候寫日誌時的一些操作。

3.1  原子修改

資料庫最基礎的操作就是以原子的方式修改資料區塊。前台進程想修改一個或幾個資料區塊時,首先得擷取對資料緩衝區中包含該塊的緩衝的一個排它存取權限。然後構建改變向量。重做日誌緩衝區中分配空間儲存重做記錄。重做緩衝區位於SGA中,LGWR進程定時將重做日誌緩衝區中的重做記錄寫入到重做記錄檔中以釋放空間。當重做日誌滿了的時候,LGWR就要做日誌切換。注意在重做日誌緩衝區中分配空間的同時也會在重做記錄檔中分配空間。重做日誌緩衝區空間分配後前台進程負責構建重做記錄,此後才能修改資料緩衝區中的資料區塊。然後當重做日誌緩衝區中的重做記錄寫到重做檔案中才算資料庫變更完成。恢複保證重做日誌中記錄的變更都會應用到資料檔案中(除非是不完全恢複)。

3.2  寫日誌優先

寫日誌優先是一個緩衝區執行協議,用來協調寫髒資料到資料檔案中和寫重做日誌記錄到重做記錄檔的順序。根據寫日誌優先協議,在DBWR進程將髒資料寫入到資料檔案中之前,LGWR進程必須先將對應的重做日誌記錄寫入到重做記錄檔中。

注意,寫日誌優先協議跟提交時寫日誌協議是獨立的(見3.3)。

同時注意,寫日誌優先協議只適用於將那些在資料緩衝區中的髒資料寫入到資料檔案這種情形,不適用於直接路徑寫(如由直接路徑讀導致的)。

寫日誌優先協議保證了資料檔案中沒有一種變更在重做記錄檔中沒有記錄,不惜以失敗為代價。

寫日誌優先協議還保證了所有資料區塊都在先寫完重做日誌並保證能夠復原的情況下才寫到磁碟的,使得如果提交失敗的時候可以復原所有修改。這裡的重做資訊其實就是復原段的重做資訊。

寫優先協議在資料庫事務層保證事務的原子性起了很大作用。

3.3  事務提交

事務提交時會分配一個SCN並且建立一個包含那個SCN提交的重做日誌記錄。當事務所有的重做記錄(包括commit對應的重做記錄)都寫到磁碟上的重做記錄檔中時,commit過程才算結束。因此commit會強制日誌重新整理到磁碟上——至少截止到commit的重做記錄,這就是通常說的log- force-at-commit。

恢複就是設計成這樣,在事務commit的時候只需重新整理重做記錄到重做日誌,而不用重新整理該事務修改的所有髒資料,為的是在即使失敗的情況下也能保證事務持久性。這就是通常說的no-datablock-force-at-commit。

3.4  線程檢查點事件

線程檢查點事件發生時,會將該線程的重做記錄中SCN小於指定值的重做記錄保護的髒資料都重新整理到資料檔案中。完成後,該線程在控制檔案中的線程檢查點結構會被更新。

線程檢查點事件開始時,首先是得到一個SCN,初始化一個檢查點結構。然後該執行個體的資料緩衝區中所有髒資料都被打上做檢查點的標識。DBWR分階段將這些標識的髒資料寫入到資料檔案中。當所有髒資料都寫入到資料檔案中時,檢查點結構中的SCN被更新為前面得到的SCN,然後用該檢查點更新該線程在控制檔案中的檢查點記錄。

一個線程檢查點事件可能會或者不會推進資料庫檢查點。當只有一個開啟的線程時,新的線程檢查點也同時是新的資料庫檢查點。如果有多個開啟的線程,並且當前線程就是資料庫檢查點所聯機程,當前線程的檢查點事件會推進資料庫檢查點。因為新的檢查點SCN是最近分配的,很有可能比其他開啟狀態的線程的檢查點SCN要大,資料庫檢查點SCN將推進到新的最小的線程檢查點SCN。不過如果當前線程原有檢查點不是資料庫檢查點,那麼該線程的檢查點事件不會推進資料庫檢查點。

資料庫檢查點推進時,每個資料檔案頭部的檢查點計數也會增長。並且,每個資料檔案只要不是在熱備份中或者沒有更高的檢查點SCN(如新增的資料檔案或者剛恢複的資料檔案),資料檔案頭部的檢查點都會推進到跟新的資料庫檢查點一致,資料檔案頭將寫入磁碟。同時,資料檔案在控制檔案中的記錄的檢查點SCN也會更新為新的資料庫檢查點SCN。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.