【TUNE_ORACLE】Oracle檢查點(三)增量檢查點四個關鍵引數介紹

Attack_on_Jager發表於2021-08-20

說明

檢查點系列相關文章地址:

Oracle檢查點(一)檢查點(Checkpoint)概念介紹: http://blog.itpub.net/69992972/viewspace-2787595/

Oracle檢查點(二)檢查點效能: http://blog.itpub.net/69992972/viewspace-2787789/

Oracle檢查點(三)增量檢查點四個關鍵引數介紹: http://blog.itpub.net/69992972/viewspace-2787943/

Oracle檢查點(四)檢查點對redo日誌的影響和redo日誌大小設定建議: http://blog.itpub.net/69992972/viewspace-2788206/

Oracle檢查點(五)建立並利用Statspack定位檢查點故障: http://blog.itpub.net/69992972/viewspace-2788418/


增量檢查點關鍵的四個引數


#####################################################

# 注意:日誌檔案切換將始終覆蓋由以下四個引數引起的檢查點!#

#####################################################


1. FAST_START_MTTR_TARGET(重要引數)

自 Oracle 9i 以來, FAST_START_MTTR_TARGET引數已成為最佳化增量檢查點目標的 首選方法。透過 FAST_START_MTTR_TARGET,可以指定資料庫執行單例項的崩潰恢復所要花費的秒數。基於內部統計資訊,增量檢查點會自動調整檢查點目標,以滿足 FAST_START_MTTR_TARGET的要求。

1)檢視動態效能檢視V$INSTANCE_RECOVERY.ESTIMATED_MTTR可以顯示當前預計的平均恢復時間 (MTTR)(以秒為單位)。即使未指定 FAST_START_MTTR_TARGET,也同樣會顯示此值。

2) 檢視動態效能檢視V$INSTANCE_RECOVERY.TARGET_MTTR可以顯示由系統強制執行的有效 MTTR 目標(以秒為單位)。

3) 檢視動態效能檢視V$MTTR_TARGET_ADVICE可以顯示在當前的 MTTR 設定下由當前的工作負載產生的 I/O 數量,以及在其他 MTTR 設定下將由當前的工作負載產生的預計 I/O 數量。此檢視可幫助我們在執行時效能和設定 FAST_START_MTTR_TARGET 以實現快速恢復之間進行權衡。


2. LOG_CHECKPOINT_INTERVAL

LOG_CHECKPOINT_INTERVAL 引數指定增量檢查點目標滯後於當前日誌尾的最多 redo 塊數量。

如果指定了 FAST_START_MTTR_TARGET,就不應設定 LOG_CHECKPOINT_INTERVAL 或將其設定為0。在大多數 Unix 系統上, 作業系統塊大小都是 512 位元組

比如,將 LOG_CHECKPOINT_INTERVAL 的值設定為 10000 就意味著增量檢查點目標相對於當前日誌尾的滯後不得超過 5M。以此計算,如果 redo 日誌的大小為50M,則會對每個日誌產生10個檢查點。

LOG_CHECKPOINT_INTERVAL也會影響檢查點的發生時間,所以需要保持其隨 redo 日誌檔案的大小變化而更新。檢查點的頻率是影響資料庫從意外故障中恢復所需時間的因素之一。 檢查點之間的間隔越長,則在發生系統崩潰時,資料庫恢復所需的時間就越長。檢查點間隔越短意味著資料庫的恢復速度越快,但是代價是檢查點操作會消耗更多的資源。

另外,此引數還會影響在恢復的前滾階段期間完成資料庫恢復操作所需的時間。實際的恢復時間取決於此時間和其他因素,例如,故障型別(例項或系統崩潰、介質故障等)以及需要應用的歸檔 redo 日誌數量。


3. LOG_CHECKPOINT_TIMEOUT

LOG_CHECKPOINT_TIMEOUT 引數指定增量檢查點目標應滯後於當前日誌尾的最長秒數。換句話說,它指定緩衝區快取中的髒快取可以保持髒狀態的時間。

檢查點頻率影響資料庫從意外故障中恢復所需的時間。檢查點之間的間隔越長,資料庫恢復所需的時間就越多。

Oracle官方建議使用 LOG_CHECKPOINT_INTERVAL 而不是 LOG_CHECKPOINT_TIMEOUT 來控制檢查點間隔,後者會每“n”秒啟動一次檢查點,而不管事務頻率。這可能會導致在事務量變化的情況下出現不必要的檢查點。只要出現這個可能,就必須避免不必要的檢查點,以實現最佳效能。

注:

許多人會有這樣一種誤解:將 LOG_CHECKPOINT_TIMEOUT 設定為給定值之後,系統就會按該間隔啟動日誌切換,從而啟用用於standby資料庫配置的恢復視窗。 日誌切換會引起檢查點,但檢查點並不會引起日誌切換 引起日誌切換的唯一方式是使用 ALTER SYSTEM SWITCH LOGFILE 進行手動操作或重新調節 redo 日誌大小,以引起更為頻繁的切換。這由作業系統塊而非時間間隔控制。因此, 線上 redo 日誌的大小對效能和恢復至關重要!不能過大,也不能過小。


4. LOG_CHECKPOINTS_TO_ALERT

透過 LOG_CHECKPOINTS_TO_ALERT,我們可以將檢查點記錄到alert日誌中。

這樣做有助於確定檢查點是否按所需頻率發生。

注:

1)從Oracle9i開始,此引數變為動態引數。

2)Oracle 通常建議將此引數設定為 TRUE,因為開銷很小,可以忽略不計,但alert日誌中的資訊可能會非常有用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2787943/,如需轉載,請註明出處,否則將追究法律責任。

相關文章