徹底檢查點 (normal checkpoint)

徹底檢查點工做過程日誌

一個checkpoint操做能夠分紅三個不一樣的階段:orm

第一階段,checkpoint進程開始一個checkpoint事件,並記錄下checkpoint RBA,這個一般是當前的RBA。進程

第二階段,checkpoint進程通知DBWn進程將全部checkpoint RBA以前的buffer cache裏面的髒塊寫入磁盤。事件

肯定髒塊都被寫入磁盤之後進入到第三階段,checkpoint進程將checkpoint信息(SCN)寫入/更新數據文件和控制文件中。it

更新SCN的操做由CKPT進程完成,在Oracle 8.0以後CKPT進程默認是被啓用的,若是CKPT進程沒有啓用的話那相應的操做將由LGWR進程完成。數據

何時發生normal checkpoint生活

下面這些操做將會觸發checkpoint事件:文件

日誌切換,經過ALTER SYSTEM SWITCH LOGFILE。時間

DBA發出checkpoint命令,經過ALTER SYSTEM checkpoint。poi

對數據文件進行熱備時,針對該數據文件的checkpoint也會進行,ALTER TABLESPACE TS_NAME BEGIN BACKUP/END BACKUP。

當運行ALTER TABLESPACE/DATAFILE READ ONLY的時候。

SHUTDOWN命令發出時。

特別注意:

日誌切換會致使checkpoint事件發生,可是checkpoint發生卻不會致使日誌切換。

日誌切換觸發的是normal checkpoint,而不是你們所說的增量checkpoint,只不過log switch checkpoint的優先級很是低,當一個log switch checkpoint發生的時候它並不會當即的通知DBWn進程去寫數據文件,可是當有其它緣由致使checkpoint或者是寫入數據文件的RBA超過log switch checkpoint的checkpoint RBA的時候,此次的log switch checkpoint將會被標記成完成狀態,同時更新控制文件和數據文件頭。咱們隨後能夠作個實驗驗證這個說法。

checkpoint和SCN有什麼關係?

在Oracle中SCN至關於它的時鐘,在現實生活中咱們用時鐘來記錄和衡量咱們的時間,而Oracle就是用SCN來記錄和衡量整個Oracle系統的更改。

Oracle中checkpoint是在一個特定的「時間點」發生的,衡量這個「時間點」用的就是SCN,所以當一個checkpoint發生時SCN會被寫入文件頭中以記錄這個checkpoint。

相關文章
相關標籤/搜索