最近遇到一个hp-ux下 oracle 10g rac 从oracle 10.2.0.1升级到oracle 10.2.0.5的情况,升级后客户出现了时间问题,情况如下:
在本机登陆数据库,时间没有问题:
$sqlplus / as sysdba
sql>select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;
查询结果正确
但是当从客户端登陆:
sqlplus system/sys@jf
sql>select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;
查询结果相差8个小时。
通过上边可以判断,应该是时区问题,
当时查了/etc/timezone时区文件没有问题,因此,在没有办法情况下把network relink了一下,
$relink network
问题解决,但是重新启动主机后仍然不行,因此,只能临时用relink network 不重新启动系统先用,然后再去找原因,最后发现hp-ux下有两个时区文件,一个是/etc/TIMEZONE,一个是/etc/default/tz,查看两个时区文件的内容不一样。但是在oracle 10.2.0.1下不存在这个问题,那就是说明oracle在10.2.0.1下检查的和oracle 10.2.0.5检查的不一样。最后把这两个文件都更改正确解决此问题。
HP中的时区设置需要修改
/etc/default/tz
文件,缺省的时区设置为时区设置为 EST5EDT。
需要修改为:EAT-8
把/etc/TIMEZONE文件中更改如下:
TZ=EAT-8
export TZ
否则可能在rac系统中取时间的时侯通过网络连接串和通过本地取到的时间不一致。