oracle資料庫SCN
四種SCN
Oracle資料庫中有四SCN分別為系統檢查點SCN、資料檔案SCN、資料檔案頭SCN、結束SCN。資料檔案頭SCN存數在資料檔案頭中,而其他SCN儲存在控制檔案中。
系統檢查點SCN可通過如下語句:
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
632913
資料檔案SCN檢視:
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 632913
2 632913
3 632913
4 632913
結束SCN檢視:
SQL> select file#,last_change# from v$datafile;
FILE# LAST_CHANGE#
---------- ------------
1
2
3
4
資料檔案頭SCN檢視:
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 632913
2 632913
3 632913
4 632913
實時的資料庫SCN檢視:
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
635909
上面檢視了五種SCN資訊,其中最後一項的SCN是資料庫閃回時經常用到的,它其實是資料庫的系統檢查點SCN的實時值,當使用select checkpoint_change# from v$database;語句查詢時查出的是上次檢查點事件發生時重新整理的SCN。
查詢系統檢查點SCN,兩者相差是比較大的。
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
632913
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
636826
執行檢查點事件後,兩個值幾乎相等。所以閃回資料庫會使用第二種查詢方法以準確的恢復到想要的SCN。
SQL> alter system checkpoint;
System altered.
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
636835
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
636839
從上可以看到LAST_CHANGE值為空,說明資料庫處於開啟狀態。而當資料庫一致性關閉後,系統會將四種SCN製成統一。如果資料庫非一致性關閉則LAST_CHANGE值則仍為空。
從實驗看出資料庫一致性關閉後,四種SCN保持一致。
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1273252 bytes
Variable Size 96469596 bytes
Database Buffers 180355072 bytes
Redo Buffers 7114752 bytes
Database mounted.
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
666440
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 666440
2 666440
3 666440
4 666440
SQL> select file#,last_change# from v$datafile;
FILE# LAST_CHANGE#
---------- ------------
1 666440
2 666440
3 666440
4 666440
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 666440
2 666440
3 666440
4 666440
資料庫非一致性關閉後LAST_CHANGE值仍為空。
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1273252 bytes
Variable Size 96469596 bytes
Database Buffers 180355072 bytes
Redo Buffers 7114752 bytes
Database mounted.
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
666443
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 666443
2 666443
3 666443
4 666443
SQL> select file#,last_change# from v$datafile;
FILE# LAST_CHANGE#
---------- ------------
1
2
3
4
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 666443
2 666443
3 666443
4 666443
資料庫SCN原理:
資料庫重新啟動時,系統會對SCN進行兩次比較。第一次是比較資料檔案頭中的啟動SCN與資料檔案SCN,如果兩個值匹配,說明資料檔案不需要介質恢復。接下來比較資料檔案頭SCN與資料檔案結束SCN,如果數值匹配,說明在資料庫關閉時所有資料塊已提交,資料庫不需要恢復,正常開啟。當資料庫開啟後,資料檔案結束SCN再次被置為空。當資料檔案被設定為只讀或使用begin backup命令時該資料檔案SCN將被凍結,直到被設定為正常狀態。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29385747/viewspace-1063336/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle資料庫SCN概念Oracle資料庫
- Oracle資料庫SCN號的應用Oracle資料庫
- 【SCN】Oracle資料庫SCN號的四種獲取途徑Oracle資料庫
- 水煮Oracle9i十五——《oracle資料庫SCN概念Oracle資料庫
- Oracle資料庫中的多種SCN彙總Oracle資料庫
- SCN號與oracle資料庫恢復的關係Oracle資料庫
- ORACLE資料庫中SCN與時間的轉換Oracle資料庫
- Oracle資料庫的SCN轉換成時間和時間轉換成SCNOracle資料庫
- 檢查點和oracle資料庫的恢復(一)SCNOracle資料庫
- (轉)SCN號與oracle資料庫恢復的關係Oracle資料庫
- 基於SCN閃回資料庫資料庫
- 透過修改控制檔案scn推進資料庫scn資料庫
- Oracle資料庫啟動過程驗證檢查點SCNOracle資料庫
- 檢視當前Oracle資料庫的時間及其SCN號Oracle資料庫
- SCN, Checkpoint 與 oracle資料庫恢復的關係(final)Oracle資料庫
- SCN, checkpoint 及資料庫的恢復資料庫
- oracle日誌挖機 找到scn號 進行資料庫恢復Oracle資料庫
- 最接近資料庫的當前SCN號資料庫
- SCN與資料庫恢復的關係資料庫
- BBED 修改oracle 資料檔案的 SCN 號來做資料庫不完全恢復。Oracle資料庫
- zt_Oracle資料恢復:資料檔案頭的SCN與時間校驗_file$_scnOracle資料恢復
- oracle-scn資源控制Oracle
- 資料庫控制檔案中的SCN詳解資料庫
- 【備份恢復】閃回資料庫(二) 基於 SCN 閃回資料庫資料庫
- 同一資料庫資料SCN號與時間的轉化資料庫
- Oracle:SCNOracle
- Oracle scnOracle
- oracle 學習總結篇三:SCN號與資料庫關閉的關係Oracle資料庫
- oracle 學習總結篇三:SCN號與資料庫啟動的關係Oracle資料庫
- 啟動SCN不一致的資料庫資料庫
- 資料檔案的SCN和資料塊的SCN有何區別
- 【SCN】Oracle SCN 詳細介紹Oracle
- 探索Oracle SCNOracle
- oracle的SCNOracle
- [20170515]檢查資料庫scn指令碼.txt資料庫指令碼
- 完全無事務的資料庫SCN增長之謎資料庫
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- 【SCN】Oracle推薦scn命令參考Oracle