Oracle 檢查點涉及的SCN
1. 檢查點涉及的SCN
(1). 資料檔案中的檔案頭啟動檢查點的scn
儲存在每個資料檔案的檔案頭中
select name,checkpoint_change#
from v$datafile_header;
在安全關閉資料庫的過程中,系統會執行一個檢查點動作,這時所有資料檔案的終止scn都會設定成資料檔案頭中的那個啟動scn的值。
在資料庫重新啟動的時候,Oracle將檔案頭中的那個啟動scn(存在於各個資料檔案裡)與資料庫檔案檢查點scn(存在於控制檔案裡)進行比較,如果這兩個值相互匹配,oracle接下來還要比較資料檔案頭中的啟動scn和控制檔案中資料檔案的終止scn。如果這兩個值也一致,就意味著所有資料塊的redo記錄都已經提交,所有對資料庫的修改都沒有在關閉資料庫的過程中丟失,因此這次啟動資料庫的過程也不需要任何恢復操作,此時資料庫就可以開啟了。
(2).資料檔案檢查點SCN,
儲存在控制檔案中:
SELECT T.NAME,T.CHECKPOINT_CHANGE#,b.tablespace_name
FROM V$DATAFILE T,dba_data_files b
where t.FILE#=b.file_id;
(3).資料檔案的終止scn
儲存在控制檔案中
select name,last_change#
from v$datafile;
終止SCN在資料庫關閉或者表空間離線是才會涉及到,在正常的資料庫操作過程中,所有正處於聯機讀寫模式下的資料檔案的終止scn都為null.
在安全關閉資料庫的過程中,系統會執行一個檢查點動作,這時所有資料檔案的終止scn都會設定成資料檔案頭中的那個啟動scn的值。
(4).系統檢查點SCN
儲存在控制檔案中
select t.CHECKPOINT_CHANGE#
from v$database t;
(5). 日誌檔案的scn
select t.FIRST_CHANGE# 開始時的SCN,t.FIRST_TIME,t.NEXT_CHANGE# 結束時的SCN
from V$log_History t
order by t.FIRST_TIME;
2. 發生完全檢查點時:
資料檔案頭,標識上次處理完的啟用scn。
而CKPT程式則將所有資料檔案(無論redo log中的資料是否影響到該資料檔案)檔案頭上記錄的Start SCN更新為Next SCN; (透過檢視v$datafile_header的欄位checkpoint_change#可以查詢)
同時將控制檔案中的System Checkpoint SCN更新為Next SCN; (透過檢視v$database的欄位checkpoint_change#可以查詢)
每個資料檔案對應的Datafile Checkpoint)也更新為Next SCN;(透過檢視v$datafile的欄位checkpoint_change#可以查詢)
從Low SCN到Next SCN之間的所有redo記錄的資料就被DBWn程式寫入資料檔案中.
3. 系統是如何產生一個最新的SCN的:
實際上,這個數字是由當時的timestamp轉換過來的。每當需要產生一個最新的SCN到redo記錄時,系統獲取當時的timestamp,將其轉換為數字作為SCN。
我們可以透過函式SCN_TO_TIMESTAMP將其轉換回timestamp:
select dbms_flashback.get_system_change_number, SCN_TO_TIMESTAMP(dbms_flashback.get_system_change_number)
from dual;
也可以用函式timestamp_to_scn將一個timestamp轉換為SCN:
select timestamp_to_scn(SYSTIMESTAMP) as scn
from dual;
4. SCN除了作為反映事務資料變化並保持同步外,它還起到系統的"心跳"作用——每隔3秒左右系統會重新整理一次系統SCN。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25380026/viewspace-2220089/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- Oracle SCN健康狀態檢查Oracle
- 【TUNE_ORACLE】Oracle檢查點(二)檢查點效能Oracle
- 【體系結構】SCN與checkpoint(檢查點)
- 【TUNE_ORACLE】Oracle檢查點(一)檢查點(Checkpoint)概念介紹Oracle
- Oracle完全檢查點和增量檢查點詳解Oracle
- 【TUNE_ORACLE】Oracle檢查點(五)建立並利用Statspack定位檢查點故障Oracle
- Oracle:SCNOracle
- 【TUNE_ORACLE】Oracle檢查點(三)增量檢查點四個關鍵引數介紹Oracle
- 【SCN】Oracle SCN 詳細介紹Oracle
- oracle的scn及sequenceOracle
- 【SCN】Oracle推薦scn命令參考Oracle
- Oracle SCN詳解Oracle
- ORACLE -詳解SCNOracle
- 【TUNE_ORACLE】Oracle檢查點(四)檢查點對redo日誌的影響和redo日誌大小設定建議Oracle
- Oracle的SCN顯示問題Oracle
- Oracle的DBMS_SCN修正以及SCN的auto-rollover新特性Oracle
- 【CHECKPOINT】Oracle檢查點優化與故障處理Oracle優化
- ordebug 手動修改Oracle sga scnOracle
- oracle基於SCN增量恢復Oracle
- Oracle DG 日常點檢Oracle
- 揭示檢查點的祕密
- 【SQL】Oracle SQL共享池檢查SQLOracle
- Oracle SCN機制詳細解讀Oracle
- SQLServer的檢查點、redo和undoSQLServer
- 【ASK_ORACLE】檢查點錯誤“Cannot allocate new log”和“Checkpoint not complete”Oracle
- Oracle資料庫中的多種SCN彙總Oracle資料庫
- 【BAK_ORACLE】Oracle DB Cloud上的備份檢查命令合集OracleCloud
- 【PDB】Oracle跨PDB檢視查詢Oracle
- oracle 推進scn(poke、gdb、event、bbed)方法Oracle
- 【TUNE_ORACLE】Oracle健康檢查基礎專案(二)專案檢查步驟概述其一Oracle
- 【TUNE_ORACLE】Oracle健康檢查基礎專案(四)專案檢查步驟概述其三Oracle
- 【TUNE_ORACLE】Oracle健康檢查基礎專案(三)專案檢查步驟概述其二Oracle
- 程式碼檢查過程中為什麼需要涉及到編譯呢?編譯
- Oracle RAC一鍵部署002(引數檢查)Oracle
- 10 Oracle跑批慢常用檢查手冊Oracle
- postgresql10.3 檢查點調整SQL
- postgresql 檢查點調整 checkpoint 轉SQL