2015-03-09 3 views
2

я создать работу в оракулу, который будет работать в каждую минуту, но проблема в том, работа создавать успешно, но не работает на время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; 
+0

, что раз это бежит? – kevinsky

+0

Вы уверены, что работа закончится через минуту? –

+0

@LalitKumarB yep! –

ответ

4
FREQ=MINUTELY;BYMINUTE=1 

Это сделает прогон задания на каждые 1 минуту. Итак, 12:01, 1:01, 2:01 и т. Д.

Если вам нужно завести его каждую минуту - достаточно FREQ=MINUTELY или вы можете добавить BYSECOND=0, если хотите, чтобы он работал ровно в 12:01:00 , 12:02:00, 12:03:00 и т.д.

+0

Примечание: это не гарантирует, что он будет работать «точно» 0 секунд - это только самое раннее время выполнения задания. Для базы данных может потребоваться некоторое время. –

1

Для простоты, чтобы эти примеры:

  • Каждую минуту

интервал повторения, используя синтаксис календарные.

'freq=minutely;' 

Интервал повторения с использованием дат и временных меток.

'sysdate + 1/24/60' 
'systimestamp + 1/24/60' 

'sysdate + interval ''1'' minute' 
'systimestamp + interval ''1'' minute' 
  • Каждую минуту на минуту

интервал повторения, используя синтаксис календарные.

'freq=minutely; bysecond=0;'

Интервал повтора с использованием даты и временные метки.

'trunc(sysdate, ''MI'') + 1/24/60' 
'trunc(systimestamp, ''MI'') + 1/24/60' 

'trunc(sysdate, ''MI'') + interval ''1'' minute' 
'trunc(systimestamp, ''MI'') + interval ''1'' minute' 

Еще пример здесь http://oracle-base.com/articles/10g/scheduler-10g.php#every_minute