Oracle
Docker for Oracle 時間戳不同步
我在此連結的幫助下創建了一個 Oracle 數據庫 Docker 映像
SYSTIMESTAMP
顯示 UTC 時間,而不是我本地機器的時間。kaushik:~ knayak$ date Fri Jun 8 17:46:35 IST 2018 select current_timestamp,systimestamp from dual; CURRENT_TIMESTAMP SYSTIMESTAMP ------------------------------------------- ---------------------------------- 08-06-18 05:47:51.742216000 PM ASIA/KOLKATA 08-06-18 12:17:51.742211000 PM GMT
如何更改容器的時間以匹配我的時區?
Google搜尋並嘗試了幾個選項,最後,什麼對我有用:-
以 root 使用者身份登錄到容器:
docker exec -u 0 -it oracle-ee bash
檢查
/etc/localtime
將指向 UTC 的文件bash# cd /etc bash# ls -lrt localtime lrwxrwxrwx 1 root root 25 May 26 12:56 localtime -> ../usr/share/zoneinfo/UTC
刪除該文件並創建一個新的軟連結以指向與您當地時區對應的文件。
bash# rm -f localtime bash# ln -s /usr/share/zoneinfo/Asia/Kolkata localtime
退出 shell 並重新啟動容器。
docker restart <containername>
驗證查詢的輸出,它看起來很好。
LOCALTIMESTAMP SYSTIMESTAMP ------------------------------ ------------------------------------- 09-06-18 01:57:23.685610000 PM 09-06-18 01:57:23.685601000 PM +05:30
命令或
localtime
文件可能因 Docker 模擬的作業系統而異。就我而言,它是 x86_64 GNU/Linux。
問題不在於您的數據庫,而是 docker 的問題。
Docker 在主機和虛擬機(“容器”……)之間的時間同步方面存在臭名昭著的問題。
最簡單的解決方案是使用管理員權限啟動 docker 容器(
--privileged
flag todocker run
),然後使用容器內的時間同步工具來修復它的時間(ntpdate -s your.country.clock
)。