我在oracle中创建了一个作业,它将每分钟运行一次,但问题是作业创建成功但未按时运行
execute PACKAGE_BATCH.USP_TERMIANTE_SUSPENSION;
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => '"LTR"."TERMINATE_SUSPENSION_JOB"',
job_type => 'STORED_PROCEDURE',
job_action => 'LTR.PACKAGE_BATCH.USP_TERMINATE_SUSPENSION',
number_of_arguments => 0,
start_date => sysdate,
repeat_interval => 'FREQ=MINUTELY;BYMINUTE=1',
end_date => NULL,
enabled => TRUE,
auto_drop => TRUE,
comments => 'Terminate Suspension When End Date is equal to Current Date');
DBMS_SCHEDULER.set_attribute
( name => '"LTR"."TERMINATE_SUSPENSION_JOB"',
attribute => 'job_action',
value => 'LTR.PACKAGE_BATCH.USP_TERMINATE_SUSPENSION');
DBMS_SCHEDULER.SET_ATTRIBUTE(
name => '"LTR"."TERMINATE_SUSPENSION_JOB"',
attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_RUNS);
DBMS_SCHEDULER.enable(
name => '"LTR"."TERMINATE_SUSPENSION_JOB"');
END;
最佳答案
FREQ=MINUTELY;BYMINUTE=1
这将使作业每“1”分钟运行一次。所以 12:01、1:01、2:01 等等。
如果您需要使其每分钟运行 - FREQ=MINUTELY
就足够了,或者如果您想确保它恰好在 12 点运行,您可以添加 BYSECOND=0
: 01:00、12:02:00、12:03:00 等
关于Oracle 作业调度程序不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28943193/