客户端连接服务器端后sysdate时间不正确的处理

时间:2022-09-13 22:26:57

一、环境信息介绍

业务类型:某地级市社保数据库

操作系统:aix 7.2

数据库版本: 11.2.0.4

数据库架构:Rac R2

数据文件存储:ASM

二、故障描述

开发人员使用sql developer连接数据库查询sysdate时间与北京时间出现几小时的时差,系统工程师只修改了系统时间和时区。

三、修改过程(只记录解决问题流程,省略输出结果)

1.修改服务器系统时间

#echo $TZ        (⚠️如果是当前北京时间,则不需要修改) 

#smitty system (进入修改时间界面)

2.修改数据库的时区

SQL>select dbtimezone from dual;

3.修改数据库的dbtimezone

SQL>alter database set time_zone='+08:00';

4.修改ASM的环境变量

#su - grid
$srvctl getenv asm             (⚠️如果是当前北京时间,则不需要修改)

$srvctl setenv asm -t 'TZ=Asia/Shanghai'

5.修改database的环境变量

#su - grid

$srvctl getenv database -d 哪个库           (⚠️如果是当前北京时间,则不需要修改)

$srvctl setenv database -d 哪个库 -t ‘TZ=Asia/Shanghai'

6.修改Grid的环境变量

#su - root

#vi $GRID_HOME/crs/install/s_crsconfig_hxbak1_env.txt


四、修改完重启cluster,集群的关闭开启顺序:


1.关闭数据库实例

#su - oracle                    (⚠️ 分别在每个节点上都要执行)

$sqlplus / as sysdba

SQL>shutdown immediate;

2.关闭集群

#su - root

#cd $GRID_HOME/bin

#./crsctl stop cluster -all  (⚠️必须用root用户,“-all”一个节点执行,没有“-all”每个节点分别执行)

3.开启集群

#su - root

#cd $GRID_HOME/bin

#./crsctl start cluster -all  (⚠️必须用root用户,“-all”一个节点执行,没有“-all”每个节点分别执行)