奇怪的Oracle 11gRAC日志記錄的時間與操作系統時間不一致問題
環境:
suse 11sp4
Oracle 11.2.0.4 RAC
安裝完成軟件和補丁后,檢查時間,發現兩個主機時間相差5個小時。
調整系統時間,調整兩臺主機為同一時間點。
date -s '2017-03-18 11:23:00'
調整之后重啟主機,檢查發現主機時間一致,檢查集群alert日志發現日志文件時間和日志里面輸出時間不一致,
按照以往經驗肯定是由于grid時間不一致導致,檢查兩臺主機,發現集群時區正常,信息如下:
grid@jdXXXac1:/oracle/XXXXXXXX/grid/crs/install> more s_crsconfig_jdXXXac1_env.txt
### This file can be used to modify the NLS_LANG environment variable, which determines the charset to be used for messages.
### For example, a new charset can be configured by setting NLS_LANG=JAPANESE_JAPAN.UTF8
### Do not modify this file except to change NLS_LANG, or under the direction of Oracle Support Services
TZ=Asia/Aden
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
TNS_ADMIN=
ORACLE_BASE=
檢查主機硬件時間,發現兩臺主機硬件時間相差五個小時,檢查方式如下:
hwclock --show
同步硬件時間和系統時間一致,同步方式如下:
hwclock --hctosys
調整后重啟主機,發現集群alert日志發現日志文件時間和日志里面輸出時間依然不一致。
網上查詢Asia/Aden地區位置在 Aden 亞丁[也門] (與北京東八區標準時差),跟北京標準時差5個小時,推測可能是系統時區配置錯誤。
檢查系統時區,檢查方式如下:
jdwebrac2:/home/icbccs # more /etc/sysconfig/clock| grep TIMEZONE
TIMEZONE="Asia/Shanghai"
DEFAULT_TIMEZONE="US/Eastern"
jdXXXac1:/home/icbccs # more /etc/localtime
TZif2
CST-8
jdXXXac1:/home/icbccs # more /etc/sysconfig/clock| grep TIMEZONE
TIMEZONE="Asia/Aden"
DEFAULT_TIMEZONE="US/Eastern"
jdXXXac1:/home/icbccs # more /etc/localtime
TZif2
CST-3
正如所推測,調整系統時區:
調整節點1 clock文件為正確時區。
TIMEZONE="Asia/Shanghai"
rm -f /etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
重啟主機后,檢查系統時間正確,發現集群alert日志發現日志文件時間和日志里面輸出時間依然不一致。
調整grid時間為"Asia/Shanghai",調整文件為 $ORACLE_HOME/crs/install/s_crsconfig_`hostname`.txt
調整后重啟主機后,檢查集群alert日志發現日志文件時間和日志里面輸出時間依然不一致。
再次重新檢查系統時區、系統時間、硬件時間、grid時區,發現硬件時間和系統時間不一致。重新同步硬件時間后重啟crs集群后恢復正常。
hwclock --hctosys
總結:隨著Oracle使用的推廣,安裝數據庫集群過程中對于一些提前條件檢查好多人會忽略,導致數據庫安裝后出現各種關于時間的故障,建議在安裝集群時前提條件一定要檢查,尤其是時間和時區。