Sysdate from dual does not match first_time from v$log

故事最开始的起因,是监控发现v$log中的first_time时间,显示的是昨天的时间。而登录数据库检查sysdate是正常的时间。

我们可以模拟出来下面的故障:

session 1,用 TZ=EST5EDT起库,此时,可以看到v$log中的FIRST_TIME是12小时之前的。

新开一个session 2登录进去。可以看到sysdate是当前时间:

进一步发现,发生问题的原因是起库的时候,由于之前有一步操作是启动OGG,启动OGG时因为某些特别的原因,需要进行了unset TZ操作,所以导致使用了默认的TZ=EST5EDT。操作完之后,没有再TZ=EAT-8,所以变成以TZ=EST5EDT启库了

处理方案:
加载正确的TZ环境变量,重启数据库。
另外,检查数据库中是否存在dba_tab_column中的data_type字段是否存在timestamp with local time zone的应用的表,如果没有,则不影响应用。注意这里是with local time zone才有影响,如果是with time zone则不受影响。

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据