【发布时间】:2013-11-09 15:47:39
【问题描述】:
我想创建一个每年在2am on the first Sunday in October 上运行的作业,我尝试使用以下代码。但是得到了这样的错误,
Error report:
ORA-27419: unable to determine valid execution date from repeat interval
ORA-06512: at "SYS.DBMS_ISCHED", line 124
ORA-06512: at "SYS.DBMS_SCHEDULER", line 271
ORA-06512: at line 2
这是创建作业的代码
BEGIN
DBMS_SCHEDULER.CREATE_JOB(job_name => 'To_DST_Australia',
job_type => 'PLSQL_BLOCK',
JOB_ACTION => 'BEGIN
NULL;
END;',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=YEARLY; BYMONTH=OCT; BYDAY=1SUN; BYHOUR=2; BYMINUTE=00; BYSECOND=00',
end_date => NULL,
enabled => TRUE,
comments => '1st Sunday in October');
END;
/
提前致谢。
【问题讨论】:
-
更改
FREQ=MONTHLY而不是YEARLY执行得很好。尽管如此,在YEARLY的情况下,仍不确定失败的原因。如果我们使用YEARLY指定BYDAY=SUN工作正常。 -
Oracle docs on BYDAY: “使用数字,如果使用 YEARLY 频率,您可以指定一年中的第 26 个星期五,或者使用 MONTHLY 频率指定每月的第 4 个星期四。” docs.oracle.com/cd/E16655_01/appdev.121/e17602/…
-
一年中的第一个星期日不在十月,所以 YEARLY 表达式不匹配任何日期(因为您规定它应该尝试查找一年中的第一个星期日,但它必须在 10 月)。
标签: oracle oracle11g dbms-scheduler dbms-job