oracle rac CTSS时钟同步模式转换为NTP同步模式的实施记录(4)

       数据库现在的问题依然是重启之后,系统时间正确,但是在客户端查询时间会出现时间前移的问题,只有通过手工sqlplus启动数据库的方式才能解决,通过一个语句可以直观的查看出时间:
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 -t 'LIBPATH=/lib'

 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,需要修改这个文件,打开这个文件,

### 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 
       注意:两个节点都要修改,修改之后重启生效。

到这里,这个事总算是解决了,重启时间正常。学到了很多啊

    


 

 

 

 

 

 

 

请使用浏览器的分享功能分享到微信等