對於增量檢查點工作原理的理解
一、理解幾個概念:
檢查點佇列是什麼:
資料緩衝池中髒塊佇列
佇列的髒塊隊尾的增長由伺服器程式來維護
佇列的使用者為DBWn,即DBWn不斷的去讀取檢查點佇列,並將髒塊寫入資料檔案中
佇列裡有個比較重要的概念:檢查點位置,由CKPT來維護
checkpoint position是什麼:
檢查點位置( checkpoint position),由CKPT來維護,CKPT不斷的去檢視DBWn的寫入進度,如果此次看到的DBWn寫入的最後一塊已經寫入資料檔案的資料塊和上次看到的不一致,說明CKPT從上次檢查到這次檢查期間,DBWn又寫了一些髒塊到資料檔案中,這時候要維護checkpoint position,更新為指向DBWn最後一次寫入資料檔案的資料塊。
綜上:檢查點位置可以保證的是:檢查點位置之前的髒塊都已經寫入資料檔案,之後的髒塊都還沒有寫入資料檔案。
DBWR的工作內容:
不斷的將檢查點佇列裡的髒塊按照順序寫入資料檔案中,寫入之前需要去看自己的RBA指向的redo log是否寫入online redo log中,只有RBA指向的redo log塊已經成功寫入online redo log,才能繼續完成資料塊的寫入。
LGWR的工作內容:
不斷的將redo log buffer裡的資料寫入online redo log中。
CKPT的工作內容:
官方文件介紹:
1.The checkpoint process (CKPT) updates the control file and data file headers with checkpoint information and signals DBWn to write blocks to disk.
2.Checkpoint information includes the checkpoint position, SCN, location in online redo log to begin recovery, and so on.
3.CKPT does not write data blocks to data files or redo blocks to online redo log files.
即:
1.檢查點程式更新控制檔案和資料檔案頭部的檢查點資訊,並且通知DBWn將資料塊寫入磁碟中。
2.檢查點資訊包括檢查點位置,SCN,online redo log裡開始例項恢復的地方,等等。
3.檢查點程式是不會直接寫資料檔案或者線上重做日誌檔案的。
個人理解:
定期去檢視DBWR的寫入進度,即看DBWR已經完成了哪些髒塊的寫入,並維護checkpoint position。
理解重點:DBWR在寫入髒塊前,會去觸發LGWR對該塊的日誌的寫入,確保該髒塊相關聯的redo log一定已經寫入redo日誌。
二、若資料庫例項崩潰,例項恢復期間所做的內容:
恢復的起點:控制檔案中記錄的最新的RBA指向的online redo log記錄。
恢復的終點:online redo log檔案最後寫入的redo log塊的最後一條記錄。
恢復的過程:將恢復起點到終點之間的redo記錄重新執行一遍。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30167136/viewspace-1483355/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle完全檢查點和增量檢查點詳解Oracle
- [20190312]關於增量檢查點的疑問(補充).txt
- [20200402]增量檢查點時間間隔.txt
- 【TUNE_ORACLE】Oracle檢查點(三)增量檢查點四個關鍵引數介紹Oracle
- 對GPDB查詢計劃的Motion結點的理解
- 生產裝置點巡檢的工作原理和使用流程
- 乾貨:HashMap的工作原理解析HashMap
- 深入理解HTTPS工作原理HTTP
- 對於BFC的理解
- 對於MVVM的理解MVVM
- 【TUNE_ORACLE】Oracle檢查點(二)檢查點效能Oracle
- 我對EVE的一點點理解
- 深入理解:Spring MVC工作原理SpringMVC
- 深入理解Argo CD工作原理Go
- Oracle 檢查點涉及的SCNOracle
- 揭示檢查點的祕密
- 對React一些原理的理解React
- 對於button元素的理解
- 關於對Host的理解
- 金融套利策略:理解統計套利的工作原理
- 【TUNE_ORACLE】Oracle檢查點(四)檢查點對redo日誌的影響和redo日誌大小設定建議Oracle
- 點陣圖索引的工作原理 - Richard索引
- 在Linux中,keepalive工作原理是什麼及如何做到健康檢查?Linux
- 對於final理解
- 深入理解瀏覽器工作原理瀏覽器
- k8s 理解Service工作原理K8S
- 時間輪TimeWheel工作原理解析
- 【TUNE_ORACLE】Oracle檢查點(一)檢查點(Checkpoint)概念介紹Oracle
- 對於同步、非同步、阻塞、非阻塞的幾點淺薄理解非同步
- SQLServer的檢查點、redo和undoSQLServer
- 用三張圖理解深度學習的工作原理深度學習
- 問答丨如何理解雜湊表的工作原理?
- 個人對於vue的理解Vue
- 對於@Bean注入的新理解Bean
- 深入理解JS中的物件(三):class 的工作原理JS物件
- 深入理解JS中的物件(二):new 的工作原理JS物件
- 深入理解 dbt 增量模型模型
- 對 Python 中 GIL 的一點理解Python
- 從查詢重寫角度理解elasticsearch的高亮原理Elasticsearch