奇怪的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使用的推广,安装数据库集群过程中对于一些提前条件检查好多人会忽略,导致数据库安装后出现各种关于时间的故障,建议在安装集群时前提条件一定要检查,尤其是时间和时区。