Oracle Scn 定義

mlx_861201發表於2013-11-25
本帖最後由 mlx_861201 於 2013-3-16 13:31 編輯

Oracle Scn 定義

SCN: oracle system change number.表示oracle 系統改變號。

SCN是一個由之間轉換過來的數字,可以通過下列語句轉換SCN和具體時間。

SELECTDBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER,

SCN_TO_TIMESTAMP(DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER)FROM DUAL;

常見的SCN

SCN遍佈資料庫的每一個角落。下面列舉幾個常見和重要的SCN。

  

SCN名稱

  

存在位置



獲得方式



備註



系統檢查點SCN



控制檔案



檢視/控制檔案



一個資料庫一個



檔案檢查點SCN



控制檔案



檢視/控制檔案



一個檔案一個



檔案最終檢查點SCN



控制檔案



檢視/控制檔案


一個檔案一個



檔案頭部檢查點SCN



資料檔案



檢視/資料檔案頭



一個檔案一個



RedoFile檔案開始SCN



RedoFile



檢視/RedoFile頭



一個檔案一個



RedoFile檔案結束SCN



RedoFile



檢視/RedoFile頭



一個檔案一個



RedoLog條目的SCN



RedoFile



檢視/RedoFile條目



一個條目一個



1、系統檢查點SCN(控制檔案資料庫條目)

可以通過查詢檢視獲得系統檢查點SCN值,該值儲存在控制檔案中,SELECT CHECKPOINT_CHANGE# FROM V$DATABASE; 表示的是LAST SCNCHECKPOINTED。

可以通過dump出控制檔案進行檢視:ALTERSESSION SET EVENTS 'IMMEDIATE TRACE NAME CONTROLF LEVEL 12'。

2、檔案檢查點SCN(控制檔案資料檔案條目)

         可以通過查詢檢視獲得檔案檢查點SCN值,該值儲存在控制檔案中,SELECTNAME,CHECKPOINT_CHANGE# FROM V$DATAFILE;

可以通過dump出控制檔案進行檢視:ALTERSESSION SET EVENTS 'IMMEDIATE TRACE NAME CONTROLF LEVEL 12'。

3、檔案最終檢查點SCN(控制檔案資料檔案條目)

        可以通過查詢檢視獲得檔案最終檢查點SCN值,該值儲存在控制檔案中,SELECTNAME,LAST_CHANGE# FROM V$DATAFILE;改值在資料庫啟動時設定為無窮大,該值在資料庫正常關閉的情況下設定為關閉時的SCN,非正常關閉依舊為無窮大。

4、資料檔案頭部的檢查點SCN(資料檔案頭)

         可以通過查詢檢視獲得檔案檢查點SCN值,該值儲存在資料檔案頭部,SELECT NAME,CHECKPOINT_CHANGE# FROM V$DATAFILE_HEADER。也可以通過dump資料檔案頭塊進行檢視。

5RedoFile檔案開始SCN

表示切換到該日誌檔案的時間點,可以通過查詢檢視獲得檔案RedoFile檔案開始SCN,該值儲存在資料檔案頭部,SELECT FIRST_CHANGE# FROM V$LOG; 也可以通過dump redoFile檔案頭塊進行檢視。當前redoFile的開始SCN就是上一個redoFile的的結束SCN。

6RedoFile檔案結束SCN

表示切換到下一個日誌檔案的時間點,可以通過查詢檢視獲得檔案RedoFile檔案開始SCN,該值儲存在資料檔案頭部,SELECT NEXT_CHANGE# FROM V$LOG; 也可以通過dump redoFile檔案頭塊進行檢視。當前redoFile的結束SCN就是下一個redoFile的的開始SCN。

7RedoLog條目的SCN

         表示redo條目對應資料庫被修改時間點的CSN

各檢查點之間關係

1、資料庫正常關閉和啟動時,控制檔案的系統SCN、控制檔案中的資料檔案開始SCN和資料檔案頭部的開始SCN是相等的,檔案的最終檢查點SCN是無窮大。

2、正常關閉資料庫,oracle會做下列操作。

         A、將所有的buffer cache寫到磁碟上。

         B、用關閉的時間點SCN更新系統SCN、檔案檢查點SCN、檔案最終檢查點SCN、資料檔案頭部檢查點SCN。此時4中SCN的值相同。

3、資料庫非正常關閉(abort),資料庫不做寫buffercache操作和更新SCN操作。此時檔案最終檢查點依然為空,資料庫需要進行例項恢復。資料庫在open的過程中,從控制檔案的檢查點條目中的每個檢查點佇列中取得LRBA(檢查點佇列中第一個髒塊的LRBA)和ON DISK RBA(對應REDO FILE的最後一條redolog 條目),然後從LRBA跑日誌到ON DISK RBA。

4、資料庫正常關閉,用一個備份的資料檔案覆蓋其中一個資料檔案,此時資料檔案頭部的檢查點SCN小於控制檔案中的“檔案檢查點SCN”,此時就需要進行介質恢復。

操作對SCN號的影響

操作是否重新整理SCN號碼

  

SCN\操作

  

日誌切換



全量檢查點



正常關閉



增量檢查點



重新整理快取


offline



系統檢查點SCN



×/







×






×

檔案檢查點SCN



×/







×






×

檔案最終檢查點SCN



×



×





×



×



×


檔案頭部檢查點SCN



×/







×





√(表空間對應資料檔案)


日誌檔案開始SCN





×



×



×



×



×


日誌檔案結束SCN





×



×



×



×



×

  

RedoLog條目SCN

  

×



×



×



×



×



×

注:1、曾量檢查點會更新控制檔案checkpoint 條目的LRBA值。不會改變SCN

      2、日誌切換,假如切換之後將active型別的日誌檔案切換為inactive,則會更新系統檢查點SCN、檔案檢查點SCN和檔案頭部檢查點SCN

      3、全量檢查點會將buffercache全部寫到內容,所以日誌狀態會發生變化,所以會改變系統檢查點CSN


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

相關文章