all_scheduler_job_run_details列中的不同时区

时间:2019-01-03 13:59:05

标签: oracle scheduled-tasks

我目前正在调查一个问题,其中在作业日志报告中报告了一个小时时间不匹配。查询all_scheduler_job_run_details以查找特定作业,我得到以下结果:

select log_date
      ,actual_start_date
  from all_scheduler_job_run_details
 where ...

log_date = 03-JAN-19 02.45.11.116000 PM +01:00
actual_start_date = 03-JAN-19 03.45.11.116000 PM +02:00

请注意,log_date的时区为+ 1,actual_start_date的时区为+ 2。

是什么原因导致这些时间以不同的时区存储在job_run_detail日志中?

1 个答案:

答案 0 :(得分:2)

log_date始终处于系统时区
actual_start_date将从start date中获取时区(如果不存在),它是从调度程序的参数default_timezone中获取的

BEGIN
DBMS_SCHEDULER.CREATE_JOB (
   job_name             => 'Test',
   job_type             => 'PLSQL_BLOCK',
   job_action           => 'BEGIN null; END;',
   enabled              =>  TRUE, 
   comments             => 'xxx');
END;
/

BEGIN
DBMS_SCHEDULER.CREATE_JOB (
   job_name             => 'Test',
   job_type             => 'PLSQL_BLOCK',
   job_action           => 'BEGIN null; END;',
   start_date           =>  current_timestamp, -- tz from session
   enabled              =>  TRUE,
   comments             => 'xxx');
END;
/

select * from user_SCHEDULER_JOB_RUN_DETAILS