SCN是Oracle的內部時鍾,用來反映數據庫中所有變化,在運行過程中不斷更新。SCN種類包括:
(1)系統當前SCN

(2)Checkpoint SCN(
注意只會隨着檢查點的發生而被更新:但是在熱備模式下,checkpoint時該SCN不變)
a.Stop SCN(保存在控制文件中,又稱END SCN)
實例正常運行時STOP SCN為空,當實例正常關閉時,oracle會在
控制文件中記錄下每個數據文件對應的STOP SCN號,用來再啟動時檢查控制文件中所有數據文件對應的STOP SCN號是否都
存在並且
一致,是則表示上一次實例關閉正常,所有數據文件對應的緩存數據都已同步到磁盤,故無需進行redo/undo實例恢復。否則若發現控制文件中有某數據文件對應的STOP SCN號為空,則表明上次實例關閉非正常,此次啟動要進行實例恢復。因此STOP SCN號用來判斷下次啟動時是否需要進行
實例恢復。(如果系統斷電,那么控制文件中的STOP SCN還是為空)
SQL>select name,last_change# from v$datafile; --
online的數據文件對應的last_change#都是空,offline的數據文件對應的last_change#有值
SQL>shutdown immediate;
SQL>startup mount;
SQL>select name,last_change# from v$datafile;
如下示例:

首先通過select name,last_change# from v$datafile;查詢到test01.dbf文件存在SCN號,是因為我們將該數據文件offline了,當我們online該數據文件時,報出該數據文件需要介質恢復,直接recover該數據文件即可。重新online該數據文件就不會有問題。重新執行select name,last_change# from v$datafile;時,該數據文件對應的SCN號就沒有了。
**********************************************************************************************************************

START SCN是我們判斷是否需要介質恢復的唯一依據,介質恢復就是更新SCN號(關機時,控制文件中的stop SCN號就是copy的數據文件中start SCN號)。
***********************************************************************************************************************

****************************************************************************************************************

總結:1,SCN分兩大類:(1)系統當前SCN,用於記錄用戶對數據庫的所有操作;(2)checkpoint SCN,只會隨着檢查點的刷新而被更新。
2,checkpoint SCN又分為4小類,主要用戶數據庫開機時判斷是否需要介質恢復和實例恢復。
3,首先判斷start SCN號用於判斷開機時所有數據文件的一致性;stop SCN號用於判斷是否正常關機(實例恢復);datafile checkpoint SCN號用於判斷數據文件和控制文件的一致性;system checkpoint SCN用於判斷控制文件自身的一致性。
補充:數據庫open階段,除了檢查SCN外,還會檢查一個數據,即檢查點計數(Checkpoint CNT),而且這個檢查點計數要第一個檢查。