如何提交 dbms_job 从 06:00 和 运行 开始,星期一每小时
How to Submit dbms_job to begin at 06:00 and run every hour, Monday
我如何为 dbms_job 设置从 06:00 和 运行 开始的时间间隔,星期一每小时。
X NUMBER:=1102745;
BEGIN
SYS.DBMS_JOB.INTERVAL
(X,
'next_day(SYSDATE,''MONDAY'')+1/24'
);
END;
但此代码每周一运行 01:00。
您可以使用现代 SCHEDULER JOB
而不是旧的(和 deprecated)DBMS_JOB
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'X'
,start_date => SYSTIMESTAMP
,repeat_interval => 'FREQ=HOURLY;BYHOUR=06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23;BYMINUTE=0;BYSECOND=0;BYDAY=Mon'
,end_date => NULL
,job_class => 'DEFAULT_JOB_CLASS'
,job_type => ...
,job_action => ...
);
你可以用这个来验证重复间隔:
DECLARE
next_run_date TIMESTAMP;
BEGIN
FOR i IN 1..50 LOOP
DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING('FREQ=HOURLY;BYHOUR=06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23;BYMINUTE=0;BYSECOND=0;BYDAY=Mon', NULL, next_run_date, next_run_date);
DBMS_OUTPUT.PUT_LINE ( next_run_date );
END LOOP;
END;
我如何为 dbms_job 设置从 06:00 和 运行 开始的时间间隔,星期一每小时。
X NUMBER:=1102745;
BEGIN
SYS.DBMS_JOB.INTERVAL
(X,
'next_day(SYSDATE,''MONDAY'')+1/24'
);
END;
但此代码每周一运行 01:00。
您可以使用现代 SCHEDULER JOB
而不是旧的(和 deprecated)DBMS_JOB
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'X'
,start_date => SYSTIMESTAMP
,repeat_interval => 'FREQ=HOURLY;BYHOUR=06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23;BYMINUTE=0;BYSECOND=0;BYDAY=Mon'
,end_date => NULL
,job_class => 'DEFAULT_JOB_CLASS'
,job_type => ...
,job_action => ...
);
你可以用这个来验证重复间隔:
DECLARE
next_run_date TIMESTAMP;
BEGIN
FOR i IN 1..50 LOOP
DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING('FREQ=HOURLY;BYHOUR=06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23;BYMINUTE=0;BYSECOND=0;BYDAY=Mon', NULL, next_run_date, next_run_date);
DBMS_OUTPUT.PUT_LINE ( next_run_date );
END LOOP;
END;