Oracle 11G RAC 本地时间和通过listener连接时间不相同的问题

Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4 Oracle 11G RAC 本地时间和通过listener连接时间不相同的问题

 

背景

 

客户生产数据库服务器重启后,本地时间和通过listener连接时间不相同的问题

,比我们实际时间要慢13个小时

 

 

操作系统版本:

 

AIX 6.1

 

数据库版本

 

Oracle 11.2.0.2  RAC

 

 

 

问题描述和诊断过程

 

 

1.使用本地直接登陆和在本地通过listener查询时间相差13个小时,初步定位为时区问题

 

bash-2.05b$ sqlplus "/as sysdba"

 

SQL> select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;

 

TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS'

--------------------------------------

2012-03-27 15:17:52

 

 

bash-2.05b$ sqlplus test/testaa@spprod

 

SQL>  select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;

 

TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS'

--------------------------------------

2012-03-27 02:18:50

 

SQL>

 

 

2.根据上面推论,查看操作系统时区和数据库时区,发现时区都一致,都是正8区,说明操作系统时区或者数据库设置没有问题,这时候推断可能是listener有问题或者是sysdate远程取值有问题

 

bash-2.05b$ echo $TZ

Asia/Shanghai

bash-2.05b$

 

查看数据库时区

SQL>  select   dbtimezone from dual;

 

DBTIMEZONE

------------

+08:00

 

 

3.根据上面推断可能是listener有问题或者sysdate取值有问题,我们先看一下sysdate的取值的原理,根据metalink  [ID 227334.1], SYSDATE  SYSTIMESTAMP只是简单调用操作系统去取得时间,也就是说sysdate的取值来源于操作系统,oracle不会对sysdate的值进行处理,sysdate没有问题

 

 

4. sysdate问题排除,那就是listener的问题了,继续往下看,发现这这篇文档中也提到,操作系统时间和通过listener时间不一致的情况,出现这种情况可能是数据库启动时的时区和现在操作系统的时间不一致导致的,需要重启数据库和listener,在另一篇文档中[ID 301420.1]也说是这种情况导致的,解决方案也是重启数据库和listener

 

 

 

5.由于是RAC环境,打算一个节一个节点的重启,于是把两个节点的实例和CRS一个一个的进行重启

 

停节点2实例

bash-2.05b$ srvctl stop instance -d spprod -i spprod2

切换到root用户下面停CRS

bash-2.05b# /sporacle/11202/grid/bin/crsctl stop crs


上面crs启来之后再把实例启来,接下来我们重复上面操作,重启第一个节点

停实例1

bash-2.05b$ srvctl stop instance -d spprod -i spprod1

切换到root用户停CRS

bash-2.05b# /sporacle/11202/grid/bin/crsctl stop crs


6.重启之后发现和原来一样,说明不是这个问题,是不是和grid用户下管理ASM的实例时区也有关系呢?两个节点grid下面实例时区都是’+00.00’,于是查询公司另外的11G RAC环境,发现其它环境也一样,但是其它环境没有这个问题,基本可以排除这个问题

 

 

7.问题还没有解决,只能继续查了,最后找到了下面这篇文档How To Change Timezone for 11gR2 Grid Infrastructure [ID 1209444.1],文档上面说在 oracle 11.2.0.1 grid直接读取操作系统时区,在oracle 11.2.0.2 grid的时区放在$GRID_HOME/crs/install/s_crsconfig__env.txt这个文件中,如果需要调整时间需要修改这个文件

 

 

8.根据文档查看s_crsconfig__env.txt发现时区为TZ=CST6CDT,刚好和我们时区相差13个小时,于是修改TZ=Asia/Shanghai

 

bash-2.05b# more s_crsconfig_spdb1_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=CST6CDT

NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1

RT_GRQ=ON

TNS_ADMIN=

ORACLE_BASE=

 

修改s_crsconfig_spdb1_env.txtTZ=Asia/Shanghai (别忘记两个节点都需要修改)



9.修改好之后重启databaseCRS,问题解决

 

 

10.总结

估计为安装oracle CRS的时候操作系统时区为CST6CDT,安装之后有人修改过操作系统时区和数据库时区

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21605631/viewspace-720087/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21605631/viewspace-720087/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值