SCN的機制

gholay發表於2014-02-09

CN號概述 
SCN是當Oracle資料庫更新後,由DBMS自動維護去累積遞增的一個數字。Oracle資料庫中一共有4種SCN分別為

系統檢查點SCN: 系統檢查點SCN位於控制檔案中,當檢查點程式啟動時(ckpt),Oracle就把系統檢查點的SCN儲存到控制檔案中。該SCN是全域性範圍的,當發生檔案級別的SCN時,例如將表空間置於只讀狀態,則不會更新系統檢查點SCN。  

查詢系統檢查點SCN的命令如下 

SQL> select CHECKPOINT_CHANGE# from v$database;
CHECKPOINT_CHANGE#
------------------
            590694


SCN的機制

資料庫執行時的SCN

我們先看下oracle事務中的資料變化是如何寫入資料檔案的:

1、 事務開始;

2、 在buffer cache中找到需要的資料塊,如果沒有找到,則從資料檔案中載入buffer cache中;

3、 事務修改buffer cache的資料塊,該資料被標識為“髒資料”,並被寫入log buffer中;

4、 事務提交,LGWR程式將log buffer中的“髒資料”寫入redo log file中;

5、 當發生checkpoint,CKPT程式更新所有資料檔案的檔案頭中的資訊,DBWr程式則負責將Buffer Cache中的髒資料寫入到資料檔案中。




RESETLOGS操作
萬事萬物有果必有因,執行了不完全恢復操作,或者使用了備份的控制檔案進行恢復,或者執行Flashback Database操作之後,在開啟資料庫時必須指定RESETLOGS選項,這是由Oracle自身特性決定的。


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

相關文章