<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小菜毛毛技術分享

    與大家共同成長

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks
    Oracle通過Redo來保證數據庫的事務可以被重演,從而使得在故障之后,數據可以被恢復。Redo對于Oracle數據庫來說至關重要。

        在數據庫中,Redo的功能主要通過3個組件來實現:Redo Log Buffer、LGWR后臺進程和Redo Log File(在歸檔模式下,Redo Log File最終會寫出為歸檔日志文件)。

        在Oracle的SGA中,存在一塊共享內存,稱為Redo Log Buffer,如圖6-1所示。


    圖6-1  Oracle Instance

        Redo Log Buffer位于SGA之中,是一塊循環使用的內存區域,其中保存數據庫變更的相關信息。這些信息以重做條目(Redo Entries)形式存儲(Redo Entries也經常被稱為Redo Records)。Redo Entries包含重構、重做數據庫變更的重要信息,這些變更包括INSERT、UPDATE、DELETE、CREATE、ALTER或者DROP等。在必要的時候Redo Entries被用于數據庫恢復。

        Redo Entries的內容被Oracle數據庫進程從用戶的內存空間復制到SGA中的Redo Log Buffer之中。Redo Entries在內存中占用連續的順序空間,由于Redo Log Buffer是循環使用的,Oracle通過一個后臺進程LGWR不斷地把Redo Log Buffer的內容寫出到Redo Log File中。     

        當用戶在Buffer Cache中修改數據時,Oracle并不會立即將修改數據寫出到數據文件上,因為那樣做效率會很低,到目前為止,計算機系統中最繁忙的部分是磁盤的I/O操作,Oracle這樣做的目的是為了減少IO的次數,當修改過的數據達到一定數量之后,可以進行高效地批量寫出。

        大部分傳統數據庫(當然包括Oracle)在處理數據修改時都遵循no-force-at-commit策略。也就是說,在提交時并不強制寫。那么為了保證數據在數據庫發生故障時(例如斷電)可以恢復,Oracle引入了Redo機制,通過連續的、順序的日志條目的寫出將隨機的、分散的數據塊的寫出推延。這個推延使得數據的寫出可以獲得批量效應的性能提升

        同Redo Log Buffer類似,Redo Log File也是循環使用的,Oracle允許使用最少兩個日志組。缺省情況下,數據庫創建時會建立3個日志組。

        SQL> select group#,members,status from v$log;
        GROUP#    MEMBERS STATUS
        ---------- ---------- ----------------
        1          1 INACTIVE
        2          1 CURRENT
        3          1 INACTIVE

        當一個日志文件寫滿之后,會切換到另外一個日志文件,這個切換過程稱為Log Switch。Log Switch會觸發一個檢查點,促使DBWR進程將寫滿的日志文件保護的變更數據寫回到數據庫。在檢查點完成之前,日志文件是不能夠被重用的。

        由于Redo機制對于數據的保護,當數據庫發生故障時,Oracle就可以通過Redo重演進行數據恢復。那么一個非常重要的問題是,恢復應該從何處開始呢?

        如果讀取的Redo過多,那么必然導致恢復的時間過長,在生產環境中,我們必需保證恢復時間要盡量得短。Oracle通過檢查點(Checkpoint)來縮減恢復時間。回顧一下第1章中所提到的內容:檢查點只是一個數據庫事件,它存在的根本意義在于減少恢復時間。

        當檢查點發生時(此時的SCN被稱為Checkpoint SCN)Oracle會通知DBWR進程,把修改過的數據,也就是此Checkpoint SCN之前的臟數據(Dirty Buffer)從Buffer Cache寫入磁盤,在檢查點完成后CKPT進程會相應地更新控制文件和數據文件頭,記錄檢查點信息,標識變更。

        在檢查點完成之后,此檢查點之前修改過的數據都已經寫回磁盤,重做日志文件中的相應重做記錄對于崩潰/實例恢復不再有用。如果此后數據庫崩潰,那么恢復只需要從最后一次完成的檢查點開始恢復即可。如果數據庫運行在歸檔模式(所有生產數據庫,都建議運行在歸檔模式),日志文件在重用之前必須寫出到歸檔日志文件,歸檔日志在介質恢復時可以用來恢復數據庫故障。

    posted on 2009-12-18 13:01 小菜毛毛 閱讀(5807) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产亚洲人成网站在线观看| 亚洲成A人片在线观看无码3D | 亚洲欧洲成人精品香蕉网| 亚洲A∨无码一区二区三区| 国产亚洲中文日本不卡二区| 性生大片视频免费观看一级| 久久精品无码专区免费东京热| 国产在线播放免费| 亚洲精品自在线拍| yellow视频免费看| 蜜臀91精品国产免费观看| 亚洲成av人片天堂网| 国产精品亚洲综合一区在线观看| 国产真人无码作爱视频免费| 国产一区二区三区免费在线观看| 亚洲精品中文字幕麻豆| 8888四色奇米在线观看免费看| 亚洲视频在线观看不卡| a毛看片免费观看视频| 亚洲黄片毛片在线观看| 亚洲免费网站观看视频| 无码精品A∨在线观看免费 | 永久黄网站色视频免费| 日日躁狠狠躁狠狠爱免费视频 | 永久免费视频网站在线观看| 亚洲色成人WWW永久网站| 国产精品免费无遮挡无码永久视频| 亚洲A丁香五香天堂网| 成av免费大片黄在线观看 | 国产精品免费视频网站| 一级做a爱片特黄在线观看免费看 一级做a爱过程免费视 | 亚洲精品乱码久久久久久V| 精品香蕉在线观看免费| 综合亚洲伊人午夜网| 日韩免费码中文在线观看| 亚洲乱码中文字幕久久孕妇黑人| 国产精品免费一区二区三区 | 最近中文字幕mv免费高清视频7| 久久久久亚洲精品日久生情| 妞干网免费观看视频| 亚洲精华国产精华精华液好用|