| 程序 | 角色 | SCN 相關動作 |
|---|---|---|
| LGWR | Log Writer | Commit 時同步寫 Redo + Commit SCN 至 Online Redo Log |
| DBWn | Database Writer | 批次寫髒塊至 Datafile,不直接處理 SCN |
| CKPT | Checkpoint | 協調 Checkpoint,更新 Control File & Datafile Header Checkpoint SCN |
| SMON | System Monitor | 執行個體復原時,從 Datafile Header Checkpoint SCN 開始應用 Redo |
| ARCn | Archiver | 歸檔 Redo Log,檔名含 SCN 範圍 (thread_seq_scn.dbf) |
| RFS | Remote File Server (DG) | 接收 Primary Redo,按 SCN 順序寫 Standby Redo Log |
| MRP | Managed Recovery (DG) | 應用 Standby Redo Log,推進 Standby Checkpoint SCN |
V$DATABASE.CHECKPOINT_CHANGE#) — 資料庫級最近 Checkpoint SCN。V$DATAFILE.CHECKPOINT_CHANGE#) — 各檔案級最近 Checkpoint SCN。啟動邏輯:若 Stop SCN = 所有 Datafile Header Checkpoint SCN → 乾淨關閉,直接 OPEN;否則 → 執行個體復原,從最小 Datafile Header Checkpoint SCN 開始應用 Redo。
UNDO_RETENTION 保留 Undo,Undo Header 記錄交易 Commit SCN。AS OF SCN 123456:根據 SCN 定位 Undo,重建歷史版本。FLASHBACK DATABASE:依 Flashback Log (含 SCN) 將整個資料庫還原至指定 SCN。CHECKPOINT_CHANGE# (資料檔) 與 REDO_START_SCN (歸檔)。RECOVER DATABASE UNTIL SCN 123456:精確至 SCN 的 PITR。BLOCK CHANGE TRACKING 記錄的 SCN 篩選變更塊。V$DATAGUARD_STATS.APPLY_LAG = (Primary Current SCN - Standby Applied SCN) / SCN 生成速率。SELECT * FROM V$SCN_HEADROOM;、DBMS_SCN.GET_SCN_HEADROOM。-- 當前 SCN 產生速率 (需建立監控表定期採樣)
CREATE TABLE scn_monitor (sample_time TIMESTAMP, current_scn NUMBER);
-- 排程每分鐘 INSERT
INSERT INTO scn_monitor VALUES (SYSTIMESTAMP, DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER);
-- 查詢最近 1 小時平均速率
SELECT (MAX(current_scn) - MIN(current_scn)) /
(EXTRACT(DAY FROM (MAX(sample_time)-MIN(sample_time)))*86400 +
EXTRACT(HOUR FROM (MAX(sample_time)-MIN(sample_time)))*3600 +
EXTRACT(MINUTE FROM (MAX(sample_time)-MIN(sample_time)))*60 +
EXTRACT(SECOND FROM (MAX(sample_time)-MIN(sample_time)))) AS scn_per_sec
FROM scn_monitor
WHERE sample_time > SYSTIMESTAMP - INTERVAL '1' HOUR;
-- 檢查是否接近 Headroom (12c+)
SELECT * FROM V$SCN_HEADROOM;
-- 查詢資料檔 Header SCN (需 DBA)
SELECT file#, checkpoint_change# FROM v$datafile_header;
SCN 是 Oracle 一致性時鐘的核心,貫穿 事務提交 → Redo 持久化 → Checkpoint 推進 → 執行個體復原 → Flashback → 備份恢復 → 複製同步 全鏈路。理解 SCN 在各背景程序、各儲存介質 (Log Buffer、Online Redo、Control File、Datafile Header、Archive Log、Flashback Log) 的流轉與持久化時機,是診斷資料不一致、設計高可用架構、排查效能抖動的關鍵內功。