DBMS_SCHEDULER JOB случайным образом пропускает запуск

Мне нужно создать задание планировщика, которое выполняет цепочку каждый день в 00:01.

В случае, если выполнение задания длится более 24 часов, следующий запуск должен начаться сразу после завершения текущего.

Я попытался установить:

  • freq=Дневной интервал=1
  • freq=Дневной интервал=1 BYHOUR=0 BYMINUTE=1
  • freq=еженедельно BYDAY=" пн, вт и т. д...." BYHOUR=0 BYMINUTE=1

Все вышеперечисленное не удалось.

На самом деле были выполнения дольше 24 часов, и следующее задание запускалось немедленно, но также случалось, что задание пропускало день и планировало следующий запуск на следующий день.

Изменить: я заметил, что запуск пропускается, когда (примеры): * С таким интервалом: FREQ=WEEKLY; ДНЕМ=ПН,ВТ,СР,ЧТ,ПТ,СБ,ВС; ПО ЧАСАМ=0; НА МИНУТУ=1; НА СЕКУНДУ=0

  1. Во время выполнения в понедельник некоторые шаги цепочки были пропущены (в понедельник), задание завершило выполнение во вторник и установило следующий запуск в среду.

  2. Цепной шаг (только один, есть и другие) был поставлен на паузу. Во время выполнения в понедельник я приостановил выполнение шага, задание завершило выполнение во вторник и установило следующий запуск в среду.


person MPAW    schedule 18.08.2016    source источник
comment
Вы установили атрибут schedule_limit? Проверьте также просмотр ALL_SCHEDULER_JOB_LOG   -  person Wernfried Domscheit    schedule 19.08.2016
comment
Я не ставил лимит. Проверил логи, ничего интересного не было - уровень логирования полный   -  person MPAW    schedule 19.08.2016


Ответы (2)


Взяв пример

  • Начало понедельника 00:01, следующее запланировано на вторник 00:01. Финиш 23:07
  • Начало вторника в 00:01, следующее запланировано на среду в 00:01, окончание в среду в 00:05.
  • Среда начинается в 00:05 (с задержкой, т.к. вторник еще шел)

Вам нужно обратить внимание на старт в среду, так как именно он определит время следующего старта. Если для него установлено «дневной интервал = 1», он не будет работать как минимум еще один день. Используйте часовой интервал, но с фильтром по часам/минутам, чтобы он не запускался каждый час.

person Gary Myers    schedule 19.08.2016
comment
Спасибо за ответ. В случае, если я установил часовой интервал = 24 BYHOUR = 0 BYMINUTE = 1, и в вашем примере это среда. Разве он не будет ждать следующего события 00:01? В результате следующий запуск будет в четверг 00:01? - person MPAW; 19.08.2016

Вы пытались включить работу?

BEGIN
  DBMS_SCHEDULER.enable(name=>'"schema"."job_name"');
END;
person Moptan    schedule 18.08.2016
comment
Моптан, я писал о расстрелах и ближайших следованиях. Работа была включена. - person MPAW; 19.08.2016