探索Oracle SCN

Jujay發表於2011-11-16
SCN是Oracle資料庫的內部時鐘,它在Oracle的多個地方出現,含義各不相同。
1.系統檢查點(system checkpoint)SCN
每當一個檢查點完成時,Oracle就把該檢查點對應的SCN記錄到控制檔案中,可以用以下語句檢視當前資料庫的檢查點SCN:
select CHECKPOINT_CHANGE# from v$database;

CHECKPOINT_CHANGE#
------------------
        6627441168
2.資料檔案頭SCN(資料檔案的啟動SCN)
該SCN記錄在每個資料檔案頭中,正常情況下,該SCN應該和記錄在控制檔案中的檢查點SCN一致,可以用以下語句檢視資料檔案頭的SCN:
select FILE#,CHECKPOINT_CHANGE# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1         6627448310
         2         6627448310
         3         6627448310
         4         6627448310
         5         6627448310
3.資料檔案的檢查點SCN和終止SCN
這兩個SCN不是記錄在資料檔案中,而是記錄在控制檔案中,可以通過以下語句檢視:
select CHECKPOINT_CHANGE#,LAST_CHANGE# from v$datafile;

CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
        6627448310
        6627448310
        6627448310
        6627448310
        6627448310
4.三個資料檔案SCN的關係
和資料檔案相關的SCN有:啟動SCN(即資料檔案頭SCN),檢查點SCN,終止SCN,其中第一個SCN儲存在每個資料檔案頭,而後兩個SCN都儲存在控制檔案中。
在資料庫的正常執行中,啟動SCN,檢查點SCN應該一樣,而終止SCN被設為無窮大(NULL),如果資料庫正常關閉,則在關閉前會將每個資料檔案的終止SCN設為和啟動SCN一樣;如果資料庫異常關閉,終止SCN仍儲存無窮大。
每次資料庫啟動時,比較每個資料檔案的啟動SCN和終止SCN,如果一致,該資料檔案不需要恢復,如果不一致則必須恢復。

5.日誌檔案SCN
日誌檔案有低SCN和高SCN之分,低SCN代表該日誌檔案第一個Redo記錄的SCN,而高SCN代表該日誌檔案最後一個Redo記錄的SCN,可以通過以下語句查詢:

select FIRST_CHANGE#,NEXT_CHANGE# from v$log_history;








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

相關文章