DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Включение и отключение заданий

Если это задание в настоящий момент работает, команда возвратит ошибку (по умолчанию). Можно изменить такое поведение, задав параметр FORCE:
Временно отключить или включить задание можно при помощи процедур DISABLE и ENABLE соответственно. Например, для того чтобы отключить задание RMAN_INC, поступите следующим образом:
Присутствие FORCE означает, что задание будет отключено после завершения текущего работающего процесса.
Для того чтобы включить задание, отключенное на текущий момент времени, вызовите процедуру ENABLE.
Если при создании задания не указать параметр ENABLED, то задание будет создано и отключено. Необходимо явно включить задание.

Остановка работающих заданий

Если задание выполняется, и его необходимо остановить, вызовите процедуру STOP_JOB.

Процедура STOP_JOB попытается аккуратно остановить задание. К сожалению, бывают ситуации, в которых «мягкое» завершение невозможно, тогда приведенный выше оператор вернет ошибку. Можно настоять на завершении работы, используя параметр FORCE. Например, для остановки созданного нами ранее задания APPLY_INTEREST (исполняющего хранимую процедуру) можно выполнить следующий блок (задание будет остановлено незамедлительно, даже если оно выполняется в данный момент):

Владелец задания может завершить его обычным путем, не задавая параметр FORCE => TRUE. Любой другой пользователь, обладающий привилегиями ALTER для этого задания, также может остановить его обычным путем. Например, владелец задания (ACC_MASTER) может выдать привилегии пользователю ARUP:
Теперь ARUP также сможет останавливать задание.

Для использования параметра FORCE в вызове функции DBMS_SCHEDULER. STOP_JOB необходимо обладать системной привилегией MANAGE SCHEDULER.
Только задания, выполняющие PL/SQL-блоки и хранимые процедуры, могут быть остановлены с помощью параметра FORCE. Задания, выполняющие исполняемые файлы операционной системы, не могут быть остановлены при помощи параметра FORCE; придется дождаться их завершения.
Запуск задания
Планировщик позволяет явно потребовать запуска задания. Запуск задания вручную может потребоваться в ряде случаев:
Вы остановили задание, чтобы с чем-то разобраться, а теперь хотите, чтобы оно было завершено.
Время выполнения задания по расписанию еще не подошло, но вам необходимо выполнить его прямо сейчас.
Задание выполнилось по расписанию, но оно завершилось с ошибкой, и вы хотите понять ее причины (другими словами, задание запускается для его отладки.)
Запустить задание можно при помощи процедуры RUN_JOB. Например, запустим задание CALCULATE_DAILY_INTEREST:
BEGIN

Задание будет запущено в том сеансе, к которому вы подключены в данный текущий момент, если выполнены следующие условия:
Подключение осуществлено от имени владельца задания или
Пользователь имеет системную привилегию ALTER ANY JOB
Процедура RUN_JOB очень удобна. Если задание по какой-то причине не удается выполнить, вы узнаете об этом сразу, не прибегая к исследованию журнала выполнения задания (о журнале мы поговорим в разделе «Управление журналированием»). Даже если задание в текущий момент выполняется по расписанию или если другой пользователь также запускает это задание, процедура RUN_JOB все равно позволяет вам незамедлительно запустить задание в вашем сеансе. Запустив задание таким способом, вы сможете выявить любые проблемы, связанные с его выполнением или планированием, так как в случае неудачи соответствующая информация будет выведена непосредственно в среде выполнения.
При вызове DBMS_SCHEDULER. RUN_JOB столбцы RUN_COUNT, LAST_START_ DATE, LAST_RUN_DURATION и FAILURE_COUNT представления словаря данных DBA_SCHEDULER_JOBS не обновляются. Другими словами, записи об этом выполнении задания в метаданных не будет.
Предположим, что вы хотите запустить задание, но для его завершения понадобится пять-шесть часов. Вероятно, такое задание лучше запустить как фоновое, вне текущего сеанса. Для этого следует установить параметр use_current_session процедуры RUN_JOB в значение FALSE. Запустим CALCULATE_DAILY_INTEREST как фоновую задачу, затем управление сразу же будет возвращено в сеанс.

Если программа выполняется успешно, то обновляются столбцы RUN_COUNT, LAST_START_DATE, LAST_RUN_DURATION и FAILURE_COUNT представления словаря данных DBA_SCHEDULER_JOBS. Однако если по какой-то причине задание выполнить не удается, информация об этом не появится на экране, а будет записана в журнал выполнения заданий (см. далее раздел «Управление журналированием»).
 









jAntivirus