關於資料檔案頭的檢查點SCN
這些東西在資料庫啟動時,對於驗證資料庫檔案的完整性具有很重要的意義。
在ITpub上找到了一篇文章,很好,轉過來了,並作了一些測試。
原文章:http://www.itpub.net/showthread.php?s=&postid=2891734#post2891734
1、系統檢查點scn
當一個檢查點動作完成後,Oracle就把系統檢查點的SCN儲存到控制檔案中。
select checkpoint_change# from v$database
2、資料檔案檢查點scn
當一個檢查點動作完成後,Oracle就把每個資料檔案的scn單獨存放在控制檔案中。
select name,checkpoint_change# from v$datafile
3、啟動scn
Oracle把這個檢查點的scn儲存在每個資料檔案的檔案頭中,這個值稱為啟動scn,因為它用於在資料庫例項啟動時,檢查是否需要執行資料庫恢復。
select name,checkpoint_change# from v$datafile_header
4、終止scn
每個資料檔案的終止scn都儲存在控制檔案中。
select name,last_change# from v$datafile
在正常的資料庫操作過程中,所有正處於聯機讀寫模式下的資料檔案的終止scn都為null.
5、在資料庫執行期間的scn值
在資料庫開啟並執行之後,控制檔案中的系統檢查點、控制檔案中的資料檔案檢查點scn和每個資料檔案頭中的啟動scn都是相同的。控制檔案中的每個資料檔案的終止scn都為null.
在安全關閉資料庫的過程中,系統會執行一個檢查點動作,這時所有資料檔案的終止scn都會設定成資料檔案頭中的那個啟動scn的值。在資料庫重新啟動的時候,Oracle將檔案頭中的那個啟動scn與資料庫檔案檢查點scn進行比較,如果這兩個值相互匹配,oracle接下來還要比較資料檔案頭中的啟動 scn和控制檔案中資料檔案的終止scn。如果這兩個值也一致,就意味著所有資料塊多已經提交,所有對資料庫的修改都沒有在關閉資料庫的過程中丟失,因此這次啟動資料庫的過程也不需要任何恢復操作,此時資料庫就可以開啟了。當所有的資料庫都開啟之後,儲存在控制檔案中的資料檔案終止scn的值再次被更改為 null,這表示資料檔案已經開啟並能夠正常使用了。
做的測試如下:
A.資料庫開啟時,使用mount引數,不把資料庫open.
系統檢查點scn
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------ 1775875
控制檔案中的資料檔案檢查點scn
SQL> select name,checkpoint_change# from v$datafile ;
NAME CHECKPOINT_CHANGE#
------------------------------------- ------------------
/opt/oracle/oradata/dbora817/system01.dbf 1775875
/opt/oracle/oradata/dbora817/tools01.dbf 1775875
/opt/oracle/oradata/dbora817/rbs01.dbf 1775875
/opt/oracle/oradata/dbora817/temp01.dbf 1775875
/opt/oracle/oradata/dbora817/users01.dbf 1775875
/opt/oracle/oradata/dbora817/indx01.dbf 1775875
/opt/oracle/oradata/dbora817/drsys01.dbf 1775875
/opt/oracle/oradata/dbora817/perfstat.dbf 1775875
資料檔案的檔案頭中的啟動scn
SQL> select name,checkpoint_change# from v$datafile_header;
NAME CHECKPOINT_CHANGE#
------------------------------------- ------------------/opt/oracle/oradata/dbora817/system01.dbf 1775875
/opt/oracle/oradata/dbora817/tools01.dbf 1775875
/opt/oracle/oradata/dbora817/rbs01.dbf 1775875
/opt/oracle/oradata/dbora817/temp01.dbf 1775875
/opt/oracle/oradata/dbora817/users01.dbf 1775875
/opt/oracle/oradata/dbora817/indx01.dbf 1775875
/opt/oracle/oradata/dbora817/drsys01.dbf 1775875
/opt/oracle/oradata/dbora817/perfstat.dbf 1775875
控制檔案中的資料檔案終止scn
SQL> select name,last_change# from v$datafile;NAME LAST_CHANGE#------------------------------------- ------------------/opt/oracle/oradata/dbora817/system01.dbf 1775875
/opt/oracle/oradata/dbora817/tools01.dbf 1775875
/opt/oracle/oradata/dbora817/rbs01.dbf 1775875
/opt/oracle/oradata/dbora817/temp01.dbf 1775875
/opt/oracle/oradata/dbora817/users01.dbf 1775875
/opt/oracle/oradata/dbora817/indx01.dbf 1775875
/opt/oracle/oradata/dbora817/drsys01.dbf 1775875
/opt/oracle/oradata/dbora817/perfstat.dbf 1775875
這些個結束SCN都是跟啟動SCN是一樣的,這樣,當資料庫open的時候就可以不用recover了。
B.把資料庫開啟open
SQL> alter database open;
Database altered.
系統檢查點scn 變為:1775876,比原來增加了1。
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
1775876控制檔案中的資料檔案檢查點scn和資料檔案的檔案頭中的啟動scn也都被修改成為1775876,各自增加了1。
然後察看控制檔案中的資料檔案終止scn,發現都是NULL.
SQL> select name,last_change# from v$datafile;NAME LAST_CHANGE#------------------------------------- ------------------/opt/oracle/oradata/dbora817/system01.dbf
/opt/oracle/oradata/dbora817/tools01.dbf
/opt/oracle/oradata/dbora817/rbs01.dbf
/opt/oracle/oradata/dbora817/temp01.dbf
/opt/oracle/oradata/dbora817/users01.dbf
/opt/oracle/oradata/dbora817/indx01.dbf
/opt/oracle/oradata/dbora817/drsys01.dbf
/opt/oracle/oradata/dbora817/perfstat.dbf
C.對系統觸發檢查點SQL> alter system checkpoint;
System altered.
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
1775917系統檢查點scn 發生變化,增加了1。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8119050/viewspace-1007191/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於資料檔案頭的檢查點SCN知識
- 重建控制檔案, 資料檔案檢查點SCN到底來自哪裡?
- 檢查點和oracle資料庫的恢復(一)SCNOracle資料庫
- Oracle 檢查點涉及的SCNOracle
- zt_Oracle資料恢復:資料檔案頭的SCN與時間校驗_file$_scnOracle資料恢復
- 關於控制檔案與資料檔案頭資訊的說明(zt)
- 深入淺出-檢查點scn
- 檢查點機制與scn
- Oracle資料庫啟動過程驗證檢查點SCNOracle資料庫
- 資料檔案的SCN和資料塊的SCN有何區別
- 關於資料檔案autoextend on的一點記錄
- Oracle SCN機制解析 (SCN, checkpoint檢查點) - finalOracle
- 【kingsql分享】使用BBED修改Oracle資料檔案頭推進SCNSQLOracle
- 關於oracle的ckpt(檢查點程式)Oracle
- 檢查點SCN在事務發生後以及發生檢查點和歸檔操作後的變化
- 改變ogg抽取程式檢查點檔案中的檢查點
- 關於C++的標頭檔案C++
- oracle 關於-資料檔案Oracle
- 透過修改控制檔案scn推進資料庫scn資料庫
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- 【體系結構】SCN與checkpoint(檢查點)
- 資料庫控制檔案中的SCN詳解資料庫
- 關於資料庫查詢業務的幾點思考資料庫
- 在RFT中新增檔案檢查點
- [20170515]檢查資料庫scn指令碼.txt資料庫指令碼
- 關於傳送Http標頭檔案HTTP
- C語言關於標頭檔案的使用C語言
- 關於資料庫檔案最大數資料庫
- 關於index檔案呼叫查詢Index
- 關於收縮資料檔案的嘗試
- 資料檔案SCN的一致性問題
- 在SQL Server tempdb滿時檢查資料檔案SQLServer
- 使用dbv和RMAN檢查資料檔案中的壞塊
- 關於SCN的理解(全面)
- 關於scn的理解 (zt)
- 關於檔案頭保留塊資訊的儲存探索
- 關於QT的標頭檔案相互包含的問題QT
- 關於檢視檔案的幾個小命令