select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'),to_char(current_date,'YYYY-MM-DD HH24:MI:SS') from dual;
运行结果就是 sysdate比current 早13个小时左右。
这时我开看到了一篇文章
DOC ID 1476294.1 11.2.0.3 Wrong Sysdate Returned for Connections Through Listener if Database is Started With srvctl [ID 1476294.1]
文章里说的解决方法就是设置LIBPATH 环境变量。
The workaround is to set environment variable LIBPATH and restart. To set environment variable:
$ srvctl setenv database -d
To check environment varilables for a running process:
于是我在两个节点的oracle 下开始设置,但不好使,重启之后时间依然有差距。
这时我在metalink上又看到了一篇文章:How To Change Timezone for 11gR2Grid Infrastructure [ID 1209444.1],
里面的意思是说:一旦OS默认时区被修改,注意确保以下2点:
1. 对于11.2.0.1 ,确保root、grid、oracle用户的shell环境变量TZ设置正确!
2. 对于11.2.0.2及以上版本,确认 $GRID_HOME/crs/install/s_crsconfig_
< nodename>_env.txt 中的参数设置为正确的时区
问题找到了,我们的数据库版本是11.2.0.4,需要修改这个文件,打开这个文件,
< nodename>_env.txt 中的参数设置为正确的时区
问题找到了,我们的数据库版本是11.2.0.4,需要修改这个文件,打开这个文件,
### 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 settingNLS_LANG=JAPANESE_JAPAN.UTF8
### Do not modify this file except to change NLS_LANG, or under thedirection of Oracle Support Services
TZ=CST6CDT
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
RT_GRQ=ON
TNS_ADMIN=
ORACLE_BASE=
安装oracleCRS的时候操作系统时区为CST6CDT,安装之后我们修改了操作系统时区和数据库时区后就没有修改过这个值。
我们修改s_crsconfig_spdb1_env.txt的 TZ=Asia/Hong_Kong
注意:两个节点都要修改,修改之后重启生效。
到这里,这个事总算是解决了,重启时间正常。学到了很多啊