【體系結構】SCN與checkpoint(檢查點)
1. 什麼是system change number(SCN)?
SCN 是一個戳,它定義了資料庫在某一時刻的提交版本。 Oracle 為每一個提交的事務分配一個 SCN , SCN 的值是對資料庫進行更改的邏輯時間點,也可以理解為 SCN 是時間點的另一種表達方式。 Oracle 利用這個數字來記錄對資料庫所做的更改。
SCN 是一個 6Byte ( 48bit )的數字,它由兩部分表示: SCN_BASE 和 SCN_WRAP 。 SCN_BASE 是一個 4Byte ( 32bit )的數字, SCN_WRAP 是一個 2Byte ( 16bit )的數字。當 SCN_BASE 達到其最大值( 2 的 32 次方 = 4294967296 ),SCN_WRAP 將增加 1 , SCN_BASE 同時將被重置為 0. 這將一直持續到 SCN_WRAP 達到其最大值,及 2 的 16 次方 =65536 。
SCN = (SCN_WRAP * 4294967296) + SCN_BASE
從12.2 版本開始,相容性為 12.2 , SCN 是一個 8Byte 的數字, SCN 的最大值可以高達 2 的 63 次方。
SCN 隨著每個事務的提交完成而增加。提交不會寫資料檔案,也不會更新控制檔案。
當前的SCN 可以透過以下查詢獲得
SQL> select dbms_flashback.get_system_change_number scn from dual;
或
SQL> select current_scn from v$database;
2. 什麼是Checkpoint (檢查點) ?
檢查點是將修改的處於快取的資料塊重新整理到磁碟的行為。通常,當我們對一個資料塊進行修改時,該塊的修改是在記憶體中完成的。當我們提交(commit )時,它不會寫入資料檔案,而是被寫入 redolog 。所以我們可以在例項失敗時“重演”事務。最後,系統將對磁碟上的資料檔案的修改設定檢查點。
檢查點號是將所有髒緩衝區寫入磁碟的SCN 號。在物件、表空間、資料檔案、資料庫級別都可以有檢查點。檢查點保證檢查點 SCN 之前的資料庫更改都已記錄在資料檔案中。因此,在例項恢復期間,只需要應用檢查點之後所做的那些更改進行例項恢復。檢查點的目標就是將髒緩衝區安全地從 SGA 寫入到磁碟上。
有以下幾種可能會導致檢查點發生:
- 當 Oracle SGA 中的所有髒緩衝區都被 DBWR 寫入到資料檔案時
- 當 redolog 發生切換時
- 當達到 LOG_CHECKPOINT_TIMEOUT 引數設定時間時
- 透過發出指令“ alter system switch logfile ”或“ alter system checkpoint ”
當執行檢查點時,檢查點程式會更新控制檔案。需要注意的是,檢查點操作將所有更改的髒塊寫入磁碟,透過在控制檔案中記錄這一個過程。Oracle 知道在例項失敗時需要應用哪些 redolog 。要從例項失敗中恢復, Oracle 需要應用控制檔案中記錄的最後一個檢查點之後生成的所有 redolog 。
在commit 的時候不會觸發 DBWR 將髒塊從快取寫進磁碟上, commit 只會觸發 LGWR 。日誌切換會導致 checkpoint , checkpoint 不會導致日誌切換。
當日志緩衝區滿足以下內容之一時都會觸發redo write: 滿 1MB ,滿 1/3 ,每 3 秒或每次提交。
最後DBWR 、 LGWR 、 checkpoint 、 commit 的對應關係為
DBWR <---> checkpoint
LGWR <---> commit
---- end ----
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529886/viewspace-2755240/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 檢查點涉及的SCNOracle
- 【深入】體系結構-003-SCN
- 【CHECKPOINT】Oracle檢查點優化與故障處理Oracle優化
- TensorFlow——Checkpoint為模型新增檢查點模型
- postgresql 檢查點調整 checkpoint 轉SQL
- 【TUNE_ORACLE】Oracle檢查點(一)檢查點(Checkpoint)概念介紹Oracle
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- 【體系結構】與Checkpoint相關的問題解決思路
- Oracle SCN健康狀態檢查Oracle
- 【ASK_ORACLE】檢查點錯誤“Cannot allocate new log”和“Checkpoint not complete”Oracle
- 計算機組成與體系結構-浮點數表示計算機
- Docker容器體系結構及特點Docker
- Sqlserver資料庫郵件的體系結構及常用的查詢檢視SQLServer資料庫
- MySQL體系結構與儲存引擎MySql儲存引擎
- TCP/IP協議與OSI體系結構總結TCP協議
- 結構體與共用體結構體
- Oracle體系結構概述與SQL解析剖析OracleSQL
- Oracle完全檢查點和增量檢查點詳解Oracle
- 【TUNE_ORACLE】Oracle檢查點(二)檢查點效能Oracle
- golden gate同步的表結構修改檢查Go
- 資料結構與演算法知識點總結(5)查詢樹資料結構演算法
- 【PG體系結構】PG體系結構簡單說明
- 類與結構體結構體
- 資料結構與演算法知識點總結(3)樹、圖與並查集資料結構演算法並查集
- 1.2. 多租戶體系結構的優點
- Linux有什麼特點?體系結構有哪些?Linux
- BeanFactory體系結構Bean
- MongoDB 體系結構MongoDB
- Servlet 體系結構Servlet
- MySQL 體系結構MySql
- 【JVM體系結構】JVM
- 計算機組成與體系結構-cache計算機
- 計算機組成結構與基本體系計算機
- 演算法與資料結構——二分查詢插入點演算法資料結構
- 【JVM之記憶體與垃圾回收篇】JVM與Java體系結構JVM記憶體Java
- 3:Oracle體系結構(邏輯結構)Oracle
- Flink - Checkpoint配置注意點
- Swift 類與結構體Swift結構體