Oracle current_date和sysdate时间不一致解决



前段时间,发现一套新装载的Rac数据库所在操作系统时间不对,查询dbtimezone发现为-06:00,说明时区不对;
select dbtimezone from dual;

DBTIME

---------

-06:00

OK,先将rac停掉,再在一段启动数据库,更改time_zone参数:

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

更改参数后,将数据库shutdown,再将Rac数据库启动起来;

接着分别运行以下SQL,查看时间是否校准:

select sysdate from dual;

select current_date from dual;

select current_timestamp from dual;

host date

select systimestamp from dual;

在sqlplus中发现时间一致,但是开发反应使用pl/sql查询的时候显示时间不一致。即sysdate,systimestamp很current_date,current_timestamp的时间不一致。

都知道sysdate,systimestamp取的是系统的时间,为什么sqlplus中查询的值是准确的值,而通过pl/sql连接查询的值就不是准确的?

为了定位是不是数据库的问题,在该操作系统上使用DBCA重新创建一个test DB,之后查看该test数据库,发现问题依旧,从此处可以大概估算下应该不是数据库的问题,是操作系统的问题。

在AIX操作系统下date看到操作系统时区为BEIST-8,由于是测试库,将操作系统时区改为CST(Asia/shanghai)之后,重启操作系统,使用pl/sql连接数据库,发现问题解决,所有时间均一致,且都在东八区。

猜你喜欢

转载自876805935.iteye.com/blog/2086636