全域性檢查點和增量檢查點
由於Oracle中LGWR和DBWR工作的不一致,Oracle引入了檢查點的概念,用於同步資料庫,保證資料庫的一致性。在Oracle裡面,檢查點分為兩種:完全檢查點和增量檢查點。下面我們分別介紹這兩種檢查點的作用:
[@more@]1、 完全檢查點
在Oracle8i之前,資料庫的發生的檢查點都是完全檢查點,完全檢查點會將資料緩衝區裡面所有的髒資料塊寫入相應的資料檔案中,並且同步資料檔案頭和控制檔案,保證資料庫的一致。完全檢查點在8i之後只有在下列兩種情況下才會發生:
(1、)DBA手工執行alter system checkpoint的命令;
(2、)資料庫正常shutdown(immediate,transcational,normal)。
由於完全檢查點會將所有的髒資料庫塊寫入,巨大的IO往往會影響到資料庫的效能。因此Oracle從8i開始引入了增量檢查點的概念。
2、 增量檢查點
Oracle從8i開始引入了檢查點佇列這麼一種概念,用於記錄資料庫裡面當前所有的髒資料塊的資訊,DBWR根據這個佇列而將髒資料塊寫入到資料檔案中。檢查點佇列按時間先後記錄著資料庫裡面髒資料塊的資訊,裡面的條目包含RBA(Redo Block Address,重做日誌裡面用於標識檢查點期間資料塊在重做日誌裡面第一次發生更改的編號)和資料塊的資料檔案號和塊號。在檢查點期間不論資料塊更改幾次,它在檢查點佇列裡面的位置始終保持不變,檢查點佇列也只會記錄它最早的RBA,從而保證最早更改的資料塊能夠儘快寫入。當DBWR將檢查點佇列裡面的髒資料塊寫入到資料檔案後,檢查點的位置也要相應地往後移,CKPT每三秒會在控制檔案中記錄檢查點的位置,以表示Instance Recovery時開始恢復的日誌條目,這個概念稱為檢查點的“心跳”(heartbeat)。檢查點位置發生變更後,Oracle裡面透過4個引數用於控制檢查點位置和最後的重做日誌條目之間的距離。在這裡面需要指出的是,多數人會將這4個引數看作控制增量檢查點發生的時間。事實上這是錯誤的,這4個引數是用於控制檢查點佇列裡面的條目數量,而不是控制檢查點的發生。
(1、)fast_start_io_target
該引數用於表示資料庫發生Instance Recovery的時候需要產生的IO總數,它透過v$filestat的AVGIOTIM來估算的。比如我們一個資料庫在發生Instance Crash後需要在10分鐘內恢復完畢,假定OS的IO每秒為500個,那麼這個資料庫發生Instance Recovery的時候大概將產生500*10*60=30,000次IO,也就是我們將可以把fast_start_io_target設定為30000。
(2、)fast_start_mttr_target
我們從上面可以看到fast_start_io_target來估算檢查點位置比較麻煩。Oracle為了簡化這個概念,從9i開始引入了fast_start_mttr_target這麼一個引數,用於表示資料庫發生Instance Recovery的時間,以秒為單位。這個引數我們從字面上也比較好理解,其中的mttr是mean time to recovery的簡寫,如上例中的情況我們可以將fast_start_mttr_target設定為600。當設定了fast_start_mttr_target後,fast_start_io_target這個引數將不再生效,從9i後fast_start_io_target這個引數被Oracle廢除了。
(3、)log_checkpoint_timeout
該引數用於表示檢查點位置和重做日誌檔案末尾之間的時間間隔,以秒為單位,預設情況下是1800秒。
(4、)log_checkpoint_interval
該引數是表示檢查點位置和重做日誌末尾的重做日誌塊的數量,以OS塊表示。
(5、)90% OF SMALLEST REDO LOG
除了以上4個初始化引數外,Oracle內部事實上還將重做日誌檔案末尾前面90%的位置設為檢查點位置。在每個重做日誌中,這麼幾個引數指定的位置可能不盡相同,Oracle將離日誌檔案末尾最近的那個位置確認為檢查點位置。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/60857/viewspace-823478/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 全域性檢查點和增量檢查點(zt)
- Oracle完全檢查點和增量檢查點詳解Oracle
- Oracle 檢查點佇列與增量檢查點Oracle佇列
- 【效能優化】增量檢查點優化
- ORACLE增量檢查點,LRBA,BWROracle
- OCP知識點講解 之 檢查點佇列與增量檢查點佇列
- oracle ckpt檢查點型別(增量及常規完全檢查點)checkpointOracle型別
- 增量檢查點(incremental checkpoint)的解疑REM
- 【TUNE_ORACLE】Oracle檢查點(三)增量檢查點四個關鍵引數介紹Oracle
- 對於增量檢查點工作原理的理解
- 【TUNE_ORACLE】Oracle檢查點(二)檢查點效能Oracle
- oracle checkpoint檢查點Oracle
- SQLServer的檢查點、redo和undoSQLServer
- 【TUNE_ORACLE】Oracle檢查點(一)檢查點(Checkpoint)概念介紹Oracle
- 改變ogg抽取程式檢查點檔案中的檢查點
- 【TUNE_ORACLE】Oracle檢查點(五)建立並利用Statspack定位檢查點故障Oracle
- Oracle 檢查點涉及的SCNOracle
- MySQL InnoDB檢查點機制MySql
- CUUG ORACLE檢查點講解Oracle
- [zt]Oracle檢查點ckpt (checkpoint)Oracle
- 深入淺出-檢查點scn
- oracle checkpoint檢查點系列一Oracle
- 檢查點機制與scn
- 深入淺出檢查點和例項recovery
- 檢查點SCN在事務發生後以及發生檢查點和歸檔操作後的變化
- postgresql 檢查點調整 checkpoint 轉SQL
- MySQL什麼是InnoDB檢查點?MySql
- Oracle 同步、非同步完全檢查點Oracle非同步
- zt_checkpoint檢查點解密(轉)解密
- 在RFT中新增clipboard檢查點
- object checkpoint物件檢查點小記Object物件
- 那些操作會發生區域性檢查點(Partial checkpoint)!
- 招標專案流程控制點設定表和控制點檢查點
- TensorFlow——Checkpoint為模型新增檢查點模型
- postgresql10.3 檢查點調整SQL
- 29_檢查點佇列(checkpoint queue)佇列
- 關於oracle的ckpt(檢查點程式)Oracle
- oracle檢查點的相關知識Oracle