首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 系統時間查詢與 Linux 時間同步實戰指南

     編輯:Oracle 資料庫基礎

資料庫時間一致性是交易正確性、審計追蹤、跨系統整合的基石。本文涵蓋 Oracle 內部時間取得、Linux 作業系統時間檢視與修改、硬體時鐘 (CMOS) 同步機制,並說明為何必須執行 clock -w (或 hwclock -w) 確保重開機後時間不漂移。

Linux 作業系統時間操作

1. 檢視目前時間

[root@as4forora ~]# date
二 7月 1 20:06:18 CST 2008

2. 修改系統時間 (日期與時間分開或合併設定)

# 設定日期
[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"

3. 關鍵步驟:將系統時間寫入硬體時鐘 (CMOS/RTC)

[root@as4forora ~]# clock -w
# 或現代系統使用
[root@as4forora ~]# hwclock -w

原理深度解析:

  • 開機時,Linux 從 CMOS 讀取時間初始化系統時間變數。
  • date -s 僅修改記憶體中的系統時間。
  • 核心每約 11 分鐘自動將系統時間同步回 CMOS (由 CONFIG_RTC_SYSTOHC 控制)。
  • 若修改後立即重開機,尚未觸發自動同步,修改將遺失。
  • 因此生產環境修改時間後,務必執行 hwclock -w 強制同步。

Oracle 資料庫時間查詢

1. 取得資料庫伺服器當前時間 (含格式化)

SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS') AS "NOW"
FROM   DUAL;

SYSDATE 回傳資料庫伺服器作業系統時間,精度至秒。

2. 高精度時間戳記 (含毫秒/微秒)

-- 回傳 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;

3. Session 時區與資料庫時區

SELECT DBTIMEZONE, SESSIONTIMEZONE FROM DUAL;

最佳實務建議

  1. 統一時間來源:生產叢集所有節點 (DB Server、App Server) 必須同步同一 NTP 來源 (如 chrony 或 ntpd),禁止手動修改時間。
  2. 避免時區陷阱:應用層統一使用 UTC 儲存,顯示層再轉換使用者時區。
  3. 監控時間偏移:部署監控腳本定期比對 SYSDATE 與 NTP 來源,偏移超過 1 秒即告警。
  4. 備份/恢復一致性:RMAN 備份時記錄 V$DATABASE.CHECKPOINT_CHANGE# 與時間戳,確保時間點恢復 (PITR) 準確性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved