Oracle定时任务”不自动执行“

记录使用Oracle定时任务时,不自动执行的异常情况。

使用DBMS_JOB.SUBMIT创建定时任务时,能够正常自动执行,但使用DBMS_SCHEDULER.CREATE_JOB时,发现JOB的NEXT_RUN_DATE等于START_DATE,并且设置的REPEAT_INTERVAL貌似也不”生效“,其实这是因为ORACLE本身JOB默认的时区为UTC时区,所以时间是”未来时间“,解决方法就是使用SYSTIMESTAMP AS TIME ZONE '08:00',也可以使用TO_DATE指定初次执行时间

begin
      dbms_scheduler.create_job(
        job_name => 'XXX_JOBS',
        job_type => 'STORED_PROCEDURE',
        job_action => 'test',
        number_of_arguments => 0,   --没有参数
        start_date => systimestamp at time zone '08:00',
        repeat_interval => 'freq=secondly;interval=5', 
        enabled => TRUE); --设置TRUE定时任务开启
end;