SCN,系統改變號system change number,是在某個時間點定義資料庫已提交版本的時間戳標記,
SCN是一個6位元組(48bit)的數字,其值為281,474,976,710,656(2^48),分為2個部分:
SCN_BASE是一個4位元組(32bit)的數字
SCN_WRAP是一個2位元組(16bit)的數字
每當SCN_BASE達到其最大值(2^32 = 4294967296)時,SCN_WRAP增加1,SCN_BASE將被重置為0,一直持續到SCN_WRAP達到其最大值,即2^16 = 65536,
SCN=(SCN_WRAP * 4294967296)+ SCN_BASE
SCN隨著每個事務的完成而增加,提交不會寫入資料檔案,也不更新控制檔案,當發生checkpoint時,控制檔案更新,SCN被寫入到控制檔案,
總共有4種SCN:
系統檢查點(System Checkpoint)SCN :
當checkpoint完成后,ORACLE將SystemCheckpoint SCN號存放在控制檔案中,我們可以通過下面SQL陳述句查詢:
select checkpoint_change# from v$database;
資料檔案檢查點(Datafile Checkpoint)SCN:
當checkpoint完成后,Oracle將DatafileCheckpoint SCN存放在控制檔案中,我們可以通過下面SQL陳述句查詢所有資料檔案的Datafile Checkpoinnt SCN,
select name,checkpoint_change# from v$datafile;
結束SCN(Stop SCN):
ORACLE將StopSCN存放在控制檔案中,這個SCN號用于檢查資料庫啟動程序是否需要做instance recovery,我們可以通過以下SQL陳述句查詢:
select name,last_change# from v$datafile;
在資料庫正常運行的情況下,對可讀寫的online資料檔案,該SCN號為NULL,
開始SCN(Start SCN):
Oracle將StartSCN存放在資料檔案頭中,這個SCN用于檢查資料庫啟動程序是否需要做media recovery,我們可以通過以下SQL陳述句查詢:
select name,checkpoint_change# from v$datafile_header;
SCN與資料庫啟動:
Oracle在啟動程序中首先檢查是否需要media recovery,然后再檢查是否需要instance recovery,
media recovery判斷:
System Checkpoint SCN、Datafile Checkpoint SCN和Start SCN
instance recovery判斷:
Start SCN和Stop SCN
SCN與資料庫關閉:
如果資料庫的正常關閉的話,將會觸發一個checkpoint,同時將資料檔案的END SCN設定為相應資料檔案的Start SCN,當資料庫啟動時,發現它們是一致的,則不需要做instance recovery,在資料庫正常啟動后,ORACLE會將END SCN設定為NULL.如果資料庫例外關閉的話,則END SCN將為NULL,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/260658.html
標籤:其他
下一篇:MySQL基礎筆記
