liyugen 发表于 2010-11-12 21:37:07

如果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

操作系统(数据库)时间:
$ date
FriNov 12 20:41:19 CST 2010

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

关闭数据库
SQL>
shutdown immediate


修改操作系统时间为当前时间
# 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

# date
FriNov 12 20:49:41 CST 2010

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

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

查询服务器操作系统时间和当前的时间差
当前时间:
2010-11-1221:20:08

操作系统(数据库)时间:
# date
FriNov 12 20:59:31 CST 2010

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


关闭数据库
SQL>
shutdown immediate

修改操作系统时间为当前时间
# 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

# date
FriNov 12 21:26:41 CST 2010

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

kevin.zhang 发表于 2010-11-15 10:10:44

ORACLE靠SCN来标示数据,而SCN的增长跟时间无关。

spectre 发表于 2011-3-2 01:48:24

各位大师,这样的修改方法在生产环境中可行吗?

nianjun 发表于 2011-3-2 01:58:10

得实验一下
页: [1]
查看完整版本: 如果oracle数据库时间不正确,总结了一下调整方法是否可行