【體系結構】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 SCN機制解析 (SCN, checkpoint檢查點) - finalOracle
- 檢查點機制與scn
- oracle checkpoint檢查點Oracle
- [zt]Oracle檢查點ckpt (checkpoint)Oracle
- oracle checkpoint檢查點系列一Oracle
- 【CHECKPOINT】Oracle檢查點優化與故障處理Oracle優化
- Oracle 檢查點涉及的SCNOracle
- 深入淺出-檢查點scn
- 【深入】體系結構-003-SCN
- postgresql 檢查點調整 checkpoint 轉SQL
- zt_checkpoint檢查點解密(轉)解密
- 增量檢查點(incremental checkpoint)的解疑REM
- object checkpoint物件檢查點小記Object物件
- 【TUNE_ORACLE】Oracle檢查點(一)檢查點(Checkpoint)概念介紹Oracle
- 【體系結構】與Checkpoint相關的問題解決思路
- TensorFlow——Checkpoint為模型新增檢查點模型
- 29_檢查點佇列(checkpoint queue)佇列
- oracle ckpt檢查點型別(增量及常規完全檢查點)checkpointOracle型別
- 初學checkpoint and scn
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- Checkpoint和SCN的解析
- 關於資料檔案頭的檢查點SCN
- How to get SCN ,TIMESTAMP ,CHECKPOINT
- Oracle 檢查點佇列與增量檢查點Oracle佇列
- 那些操作會發生區域性檢查點(Partial checkpoint)!
- Oracle SCN健康狀態檢查Oracle
- 檢查點和oracle資料庫的恢復(一)SCNOracle資料庫
- oracle結構梳理----checkpoint——啟動與關閉Oracle
- RedoLog Checkpoint 和 SCN關係
- [Virtualization]ESXi體系結構與記憶體管理(一)體系結構記憶體
- Oracle資料庫啟動過程驗證檢查點SCNOracle資料庫
- 關於資料檔案頭的檢查點SCN知識
- Gef與MVC體系結構MVC
- 檢查點SCN在事務發生後以及發生檢查點和歸檔操作後的變化
- 指令集結構與微體系結構
- 計算機組成與體系結構-浮點數表示計算機
- Docker容器體系結構及特點Docker
- OCP知識點講解 之 檢查點佇列與增量檢查點佇列