Документация iSZN

Задание

Задание — это процедура, выполняемая на сервере СУБД, запуск которой назначен на определённое время. Например, в виде задания могут выполняться серверные операции. Задания позволяют выполнять длительные процедуры по ночам и выходным дням, когда к серверу СУБД не подключены пользователи.

Характеристики задания

  • Задание характеризуется уникальным идентификатором, распределяемым самой СУБД при его создании.
  • Задание имеет дату и время первого запуска.
  • Для задания может быть задана периодичность последующих запусков.
  • Для задания могут быть заданы дата и время, после которых задание удаляется.

Работа с заданиями

  • Для просмотра, создания, удаления и изменения заданий в Системе предусмотрен справочник заданий.

Особенности определения времени запуска задания

Дата и время первого выполнения задания

Дата и время первого выполнения задания определяются вводом соответствующих величин. Например, 1 января 2009 года в 02:00.

Дата и время последующего выполнения задания

Дата и время последующего выполнения задания определяются в начале выполнения задания с помощью SQL-выражения, возвращающего дату и время последующего запуска, и смещения. Для работы с SQL-выражениями, возвращающими дату и время последующего запуска предназначен справочник периодичностей выполнения заданий.

Смещение

Смещение представляет собой количество суток, которое необходимо добавить к дате и времени, возвращённых SQL-выражением, для получения окончательных даты и времени запуска задания.

Пример:

Выражение смещения Соответствующий интервал времени
1 1 сутки (24 часа)
7 1 неделя
1/2 12 часов
1/24 1 час
0.5/24 30 минут
5/(24*60) 5 минут

При использовании периодичностей, которые просто добавляют к дате и времени начала выполнения задания некоторое число (минут, часов или суток) и при этом не выполняют округления (до минут, часов или суток), для определения точного времени выполнения смещение можно не использовать. В наименовании таких периодичностей не указывается время, например: каждый час, ежедневно, еженедельно, ежемесячно, ежегодно и тому подобное.

Если же используются периодичности, которые выполняют округление даты и времени (в их наименованиях указывается время, например: в полночь, в 12 часов дня и тому подобное), то для определения точного времени запуска задания обычно применяют смещение.

Пример:

Параметры заданий:

Наименование Время первого запуска Периодичность Смещение
Задание 1 01.01.2009 19:20 Каждый час
Задание 2 01.01.2009 19:20 Каждое воскресенье в полночь
Задание 3 01.01.2009 19:20 Каждое воскресенье в полночь 2/24

Фактическое время выполнения заданий:

Номер запуска Задание 1 Задание 2 Задание 3
1 01.01.2009 19:20 01.01.2009 19:20 01.01.2009 19:20
2 01.01.2009 20:20 02.01.2009 00:00 02.01.2009 02:00
3 01.01.2009 21:20 09.01.2009 00:00 09.01.2009 02:00
4 01.01.2009 22:20 16.01.2009 00:00 16.01.2009 02:00
5 01.01.2009 23:20 23.01.2009 00:00 23.01.2009 02:00
6 02.01.2009 00:20 30.01.2009 00:00 30.01.2009 02:00
7 02.01.2009 01:20 06.02.2009 00:00 06.02.2009 02:00

Поведение при завершении с ошибкой

Если задание выполнилось со сбоями, то СУБД Oracle увеличивает счётчик неудачных попыток выполнения задания с момента последнего успешного выполнения на единицу и планирует повторное выполнение задания через 2 минуты. Если повторное выполнение задания также происходит со сбоями, то СУБД Oracle будет запускать его повторно через увеличивающиеся промежутки времени в соответствии с таблицей:

Количество неудачных попыток выполнения Время ожидания
1 2 минуты
2 4 минуты
3 8 минут
4 16 минут
5 32 минуты
6 и более 1 час

Задание, выполнившееся неудачно 16 раз подряд, автоматически помечается как неработоспособное и больше не выполняется.

Для управления поведением серверной операции, выполнение которой запланировано в виде задания, служит флажок «Игнорировать сбои, произошедшие при выполнении операции» на странице «Режим запуска» задачи «Серверные операции».

Если флажок снят, то в случае сбоев при выполнении серверной операции задание завершится с ошибкой и СУБД Oracle будет запускать его повторно через увеличивающиеся промежутки времени.

Если флажок установлен, то задание завершится успешно (без сбоев) даже в том случае, если серверная операция завершилась со сбоями. В этом случае задание никогда не будет помечено как неработоспособное и всегда будет выполняться повторно в определённое время (если это указано).

См. также