[20180403]关于时区问题.txt

本文记录了一次在Oracle数据库中遇到的时区问题,详细解释了如何通过对比LOG_DATE与ACTUAL_START_DATE来发现并解决时区差异问题,强调了环境变量设置的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[20180403]关于时区问题.txt

--//昨天在写文章时,再次遇到时区问题,链接blog.itpub.net/267265/viewspace-2152515/.
--//时不时在这些小问题犯错误,浪费时间,再次做一个记录.

1.环境:
SYS@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SYS@book> @ &r/pt2 'select * from DBA_SCHEDULER_JOB_RUN_DETAILS where job_name=''ORA$AUTOTASK_CLEAN'' and  log_id=10956'
   ROW_NUM    COL_NUM COL_NAME                       COL_VALUE
---------- ---------- ------------------------------ ----------------------------------
         1          1 LOG_ID                         10956
                    2 LOG_DATE                       2018-04-02 16:25:41.666577 +08:00
                    3 OWNER                          SYS
                    4 JOB_NAME                       ORA$AUTOTASK_CLEAN
                    5 STATUS                         SUCCEEDED
                    6 ERROR_x0023_                   0
                    7 REQ_START_DATE                 2017-02-28 03:00:00.400000 -08:00
                    8 ACTUAL_START_DATE              2018-04-02 01:25:41.637226 -07:00
                    9 RUN_DURATION                   +000 00:00:00
                   10 INSTANCE_ID                    1
                   11 SESSION_ID                     28,5
                   12 SLAVE_PID                      938
                   13 CPU_USED                       +000 00:00:00.02
13 rows selected.

--//LOG_DATE,ACTUAL_START_DATE时间应该非常接近.自己当时的感觉有点犯糊涂了.

SYS@book> @ &r/pt2 'select LOG_DATE-ACTUAL_START_DATE diff from DBA_SCHEDULER_JOB_RUN_DETAILS where job_name=''ORA$AUTOTASK_CLEAN'' and  log_id=10956'
   ROW_NUM    COL_NUM COL_NAME                       COL_VALUE
---------- ---------- ------------------------------ ---------------------------
         1          1 DIFF                           +000000000 00:00:00.029351


--//在仔细看才发现ACTUAL_START_DATE的时区-7,不是+8,也就是这个时间加上15小时才是北京时间.在这里竟然浪费不小的时间.
--//实际上我以前就遭遇过一次这个问题,链接:blog.itpub.net/267265/viewspace-1726412/
--//当时的问题就是环境变量问题.如果定义如下不存在问题:
$ env |grep -i nls
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
NLS_TIMESTAMP_TZ_FORMAT=YYYY-MM-DD HH24:MI:SS.FF TZH:TZM
NLS_TIMESTAMP_FORMAT=YYYY-MM-DD HH24:MI:SS.FF
NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS

--//再次做一次记录.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值