Oracle CKPT再複習
http://4856809.blog.51cto.com/4846809/1106218
記憶體資料塊寫入資料檔案,在寫的過程中,一旦發生例項崩潰,就需要例項恢復
要有一套完整的機制能夠保證使用者已經提交的資料不會丟失
而且這套機制要充分考慮IO效率問題
Oracle引入了CKPT和LGWR這兩個後臺程式,這兩個程式與DBWn程式互相合作,
提供了既安全又高效的寫髒資料塊的解決方案。
使用者程式每次修改記憶體資料塊時,都會在日誌緩衝區(log buffer)中構造一個相應的重做條目(redo entry),
該重做條目描述了被修改的資料塊在修改之前和修改之後的值。
而LGWR程式則負責將這些重做條目寫入聯機日誌檔案。
只要重做條目進入了聯機日誌檔案,那麼資料的安全就有保障了,否則這些資料都是有安全隱患的。
使用者提交(commit)時,Oracle是不一定會把提交的資料塊寫入資料檔案的。
那麼例項崩潰時,必然會有一些已經提交但是還沒有被寫入資料檔案的記憶體資料塊隨記憶體斷電消失,就需要恢復
當例項再次啟動時,Oracle需要利用日誌檔案中記錄的重做條目在buffer cache中重新構造出被丟失的資料塊,
從而完成先前滾和後回滾的工作,並將丟失的資料塊找回來。
在恢復的過程中必然要有恢復的起點和終點
終點很好解決.最後commit的點
起點就比較難定位 起點就意味著這之前的資料都已經從記憶體同步到資料檔案中了.其後的就是髒資料
起點定位時間太長,說明下次恢復週期長,週期長安全隱患大
起點定位時間太短,說明DBWN程式頻繁的寫,IO就比較緊張
為了確定最佳起點位置oracle採用CKPT程式實現完全檢查點和增量檢查點來分別定位起點
可以說檢查點的引入就是為了加速例項恢復.
oracle為檢查點程式提供了檢查點佇列,該佇列串起來的都是髒資料塊所對應的buffer header.
概括下來其實就是DBWn負責寫檢查點佇列上的髒資料塊,
而CKPT負責記錄當前檢查點佇列的第一個資料塊所對應的的重做條目在日誌檔案中的地址,將其寫到控制檔案中去.
增量檢查點引入的原因 就是加速例項恢復和減緩DBWR一次突發大任務量
完全:所有記憶體中的髒塊+所有的資料檔案+所有的控制檔案
增量:只更新控制檔案中的LRBA的位置
延遲:日誌切換,不立即做那個版本,日誌切換就會觸發完全檢查點同時,完全檢查點會更新控制檔案和資料檔案頭.
檢查點佇列隨著時間增長,由CKPT通知DBWR去寫,每次告訴DBWR寫到佇列的什麼地方 與主機的IO效率有關
也就是CKPT是監工,向DBWR提交任務,DBWR即為勞力
CKPT除了通知DBWR去寫以外,還會每三秒檢查一次DBWR的工作進度,並將DBWR當前進度記錄到控制檔案
如果3秒觸發,CKPT只做一件事,就是找出檢查點佇列裡第一個buffer header
並將該buffer header中所記錄的LRBA(Low Redo Block Address Low表示第一次修改時對應的RBA)
將LRBA記錄到控制檔案中去。
如上事件即稱為增量檢查點.目的是例項如果是日誌切換,也換做檢查點,這個檢查點並不立即去做,當日志迴圈切一圈時,第一次切換的日誌要被覆蓋前必須寫盤時會去做
除了記錄LRBA到控制檔案,還需要記錄到每個資料檔案頭。
到了8I版本後,完全檢查點只有在兩種情況下才觸發:
1. alter system checkpoint;
2.除了shutdown abort以外的正常關庫命令
手動執行alter system checkpoint完全檢查點會將所有髒塊寫盤(包括未提交的)
關閉資料庫時會將為完成的事物回滾.再將髒塊寫盤
概括下來其實就是DBWn負責寫檢查點佇列上的髒資料塊,
而CKPT負責記錄當前檢查點佇列的第一個資料塊所對應的的重做條目在日誌檔案中的地址,將其寫到控制檔案中去.
崩潰後,定位恢復的redo起點. 使起點和終點儘可能短,恢復時間就少.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2144462/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [zt]Oracle檢查點ckpt (checkpoint)Oracle
- Oracle DBWR,LGWR,CKPT,ARCH 觸發條件Oracle
- 關於oracle的ckpt(檢查點程式)Oracle
- oracle smon與pmon ckpt功能的作用(ZT)Oracle
- Oracle9i CKPT 觸發條件Oracle
- oracle實驗記錄 (CKPT的觸發)Oracle
- Oracle DBWR,LGWR,CKPT,ARCH 觸發條件 總結Oracle
- DBWn,CKPT,LGWR程式
- oracle 的伺服器程式(PMON, SMON,CKPT,DBWn,LGWR,ARCn)Oracle伺服器
- 2020年了,別再重複學習原型了原型
- oracle實驗記錄(buffer_cache分析(4)dbwr,lgwr,ckpt)Oracle
- ckpt(checkpoint)機制研究
- 複利計算再升級
- 學習學習再學習
- 【例項】之ckpt機制
- Tarjan再學習
- 詳解Oracle架構、原理、程式,學會世間再無複雜架構Oracle架構
- informix CKPT REQ 狀態處理!ORM
- oracle ckpt檢查點型別(增量及常規完全檢查點)checkpointOracle型別
- ORACLE中的物化檢視(OCM複習總結)Oracle
- JDBC複習,oracle的blob,clob的讀寫-zhaiJDBCOracleAI
- oracle複製Oracle
- 萬字詳解Oracle架構、原理、程式,學會世間再無複雜架構Oracle架構
- javase複習Java
- SQL複習SQL
- 複習 面試面試
- Noip 複習
- oracle學習筆記零碎(五)--基礎知識複習(2)Oracle筆記
- oracle學習筆記零碎(五)--基礎知識複習(1)Oracle筆記
- C語言再學習C語言
- 再探強化學習強化學習
- 頁表的再學習
- ORACLE資源管理器概念及試驗(OCM複習)Oracle
- oracle 10g rac 程式複習--整理自張曉明的《大話Oracle RAC》Oracle 10g
- 4.14複利計算再升級總結
- 不要再強迫我設定複雜密碼密碼
- Oracle 多路複用Oracle
- oracle 流複製Oracle