資料庫時間一致性是交易正確性、審計追蹤、跨系統整合的基石。本文涵蓋 Oracle 內部時間取得、Linux 作業系統時間檢視與修改、硬體時鐘 (CMOS) 同步機制,並說明為何必須執行 clock -w (或 hwclock -w) 確保重開機後時間不漂移。
[root@as4forora ~]# date
二 7月 1 20:06:18 CST 2008
# 設定日期
[root@as4forora ~]# date -s 07/01/2008
二 7月 1 00:00:00 CST 2008
# 設定時間
[root@as4forora ~]# date -s 20:06:00
二 7月 1 20:06:00 CST 2008
# 合併寫法 (推薦)
[root@as4forora ~]# date -s "2008-07-01 20:06:00"
[root@as4forora ~]# clock -w
# 或現代系統使用
[root@as4forora ~]# hwclock -w
原理深度解析:
date -s 僅修改記憶體中的系統時間。CONFIG_RTC_SYSTOHC 控制)。hwclock -w 強制同步。SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS') AS "NOW"
FROM DUAL;
SYSDATE 回傳資料庫伺服器作業系統時間,精度至秒。
-- 回傳 TIMESTAMP WITH TIME ZONE,精度可至 9 位小數秒
SELECT CURRENT_TIMESTAMP FROM DUAL;
-- 格式化顯示毫秒
SELECT TO_CHAR(CURRENT_TIMESTAMP(3), 'YYYY-MM-DD HH24:MI:SS.FF3') AS "NOW_MS"
FROM DUAL;
SELECT DBTIMEZONE, SESSIONTIMEZONE FROM DUAL;
chrony 或 ntpd),禁止手動修改時間。SYSDATE 與 NTP 來源,偏移超過 1 秒即告警。V$DATABASE.CHECKPOINT_CHANGE# 與時間戳,確保時間點恢復 (PITR) 準確性。