Oracle 10g 強化閃回技術,引入 SCN_TO_TIMESTAMP、TIMESTAMP_TO_SCN 內建函數,打通系統變更號(SCN)與壁鐘時間的雙向轉換,支援精準到秒的時間點恢復與查詢。10g 前版本僅能靠 LogMiner 分析日誌間接推導,效率低且不即時。
COL scn FOR 9999999999999
SELECT dbms_flashback.get_system_change_number scn FROM dual;
-- 輸出範例:8908390522972
SELECT scn_to_timestamp(8908390522972) scn FROM dual;
-- 輸出:05-JAN-07 10.56.30.000000000 AM
SELECT timestamp_to_scn(scn_to_timestamp(8908390522972)) scn FROM dual;
-- 輸出:8908390522972(原值還原)
SELECT dbms_flashback.get_system_change_number,
scn_to_timestamp(dbms_flashback.get_system_change_number)
FROM dual;
-- 輸出範例:2877076756 | 17-AUG-07 02.15.26.000000000 PM
SELECT timestamp_to_scn(systimestamp) scn FROM dual;
-- 輸出:2877078439
V$ARCHIVED_LOG.FIRST_CHANGE# 最小值)超出映射窗口會報 ORA-08181: specified number is not a valid system change number。UNDO_RETENTION、閃回日誌空間、檢查點頻率影響,通常覆蓋數小時至數天。SELECT * FROM t AS OF TIMESTAMP (TIMESTAMP '2024-01-15 14:30:00') 替代舊式 AS OF SCN,更直觀。SCN-Time 雙向轉換是 10g 閃回技術的基石。理解其近時效性限制與秒級精度邊界,結合 DBMS_FLASHBACK 套件,能構建高可靠的時間點恢復與歷史資料分析能力。