如果oracle数据库时间不正确,总结了一下调整方法是否可行



oracle数据库中的时间依赖操作系统中的时间,如果操作系统中的时间不准确,
会导致数据库时间超前或拖后。
会导致单机数据库数据紊乱,RAC服务器由于时间
不同步重启等,下面通过实例来演示一下如何调整时间数据库
服务器时间,分两种
情况说明:


1)数据库时间比当前时间快


修改的思路是我们先确认一下数据库时间和当前时间差(以下称时间差),
然后关闭数据库一段时间(比时间差稍长一点)修改操作系统时间为正确时间,
启动数据库,验证SCN和当前时间是否一致。



验证数据库当前SCN是否与操作系统时间是否一致

SQL>
select to_char(sysdate,'yyyy-mm-ddhh24:mi:ss') current_time,

to_char(scn_to_timestamp(dbms_flashback.get_system_change_number),'yyyy-mm-ddhh24:mi:ss') scn_time

fromdual;


CURRENT_TIME
SCN_TIME

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

2010-11-1220:40:40
2010-11-1220:40:38


系统时间和SCN转换后的时间很接近,我们可以认为当前数据库SCN和系统时间是一致的



查询服务器操作系统时间和当前的时间差

当前时间:

2010-11-1220:12:08


操作系统(数据库)时间:

[oracle@localhost~]$ date

FriNov 12 20:41:19 CST 2010


可以看到服务器时间比当前时间快29分钟,同样数据库时间比当前时间快29分钟


关闭数据库

SQL>
shutdown immediate



修改操作系统时间为当前时间

[root@localhost~]# date -s 20:20:08



29分钟后打开数据库(约20:49:00

SQL>startup




验证数据库当前SCN是否与操作系统时间是否一致

SQL>
select to_char(sysdate,'yyyy-mm-ddhh24:mi:ss') current_time,

to_char(scn_to_timestamp(dbms_flashback.get_system_change_number),'yyyy-mm-ddhh24:mi:ss') scn_time


from dual;


CURRENT_TIME
SCN_TIME

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

2010-11-1220:49:20
2010-11-1220:49:17


[root@localhost~]# date

FriNov 12 20:49:41 CST 2010


可以看到当前数据库SCN转换成时间,与数据库时间,和操作系统时间基本一致


2)数据库时间比当前时间慢

如果数据库时间比当前时间慢,这种情况处理起来相对比较简单


查询服务器操作系统时间和当前的时间差

当前时间:

2010-11-1221:20:08


操作系统(数据库)时间:

[root@localhost~]# date

FriNov 12 20:59:31 CST 2010


可以看到服务器时间比当前时间慢21分钟



关闭数据库

SQL>
shutdown immediate


修改操作系统时间为当前时间

[root@localhost~]# date -s 21:25:08


直接打开数据库

SQL>startup


验证数据库当前SCN是否与操作系统时间是否一致

SQL>
select to_char(sysdate,'yyyy-mm-ddhh24:mi:ss') current_time,

to_char(scn_to_timestamp(dbms_flashback.get_system_change_number),'yyyy-mm-ddhh24:mi:ss') scn_time

fromdual;


CURRENT_TIME

SCN_TIME

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

2010-11-1221:26:27
2010-11-1221:26:27


[root@localhost~]# date

FriNov 12 21:26:41 CST 2010


可以看到当前数据库SCN转换成时间,与数据库时间,和操作系统时间基本一致

时间修改完成
标签: 暂无标签
liyugen

写了  篇文章,拥有财富 ,被  人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P4 | 发表于 2010-11-15 10:10:44
ORACLE靠SCN来标示数据,而SCN的增长跟时间无关。
回复

使用道具

P4 | 发表于 2011-3-2 01:48:24
各位大师,这样的修改方法在生产环境中可行吗?
回复

使用道具

P4 | 发表于 2011-3-2 01:58:10
得实验一下
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈