Документация 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 будет запускать его повторно через увеличивающиеся промежутки времени.
Если флажок установлен, то задание завершится успешно (без сбоев) даже в том случае, если серверная операция завершилась со сбоями. В этом случае задание никогда не будет помечено как неработоспособное и всегда будет выполняться повторно в определённое время (если это указано).