Как создать «синглтон» запланированное задание в Oracle? - PullRequest
4 голосов
/ 25 июня 2009

Возможно, мне просто не хватает словарного запаса, чтобы узнать, как это сделать:

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

Какой самый простой / изящный способ добиться этого?

Ответы [ 4 ]

4 голосов
/ 25 июня 2009

Из руководства администратора Oracle 10g:

"Пакет DBMS_JOB был заменен пакетом DBMS_SCHEDULER . В частности, если вы управляете заданиями для управления загрузкой системы, вам следует рассмотреть возможность отключения DBMS_JOB, отменив привилегию выполнения пакета для пользователей."

DBMS_SCHEDULER - рекомендуемый Oracle способ сделать это сейчас. Одним из преимуществ, которое он имеет, является то, что вы можете управлять своими заданиями через Enterprise Manager / Grid Control, если вы используете это.

3 голосов
/ 25 июня 2009

DBMS_JOB позаботится об этом. Просто используйте это.

1 голос
/ 25 июня 2009

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

НТН, Рональд.

0 голосов
/ 25 июня 2009

Если по какой-то причине dbms_job или dbms_scheduler не работают для вас, вы также можете использовать DBMS_APPLICATION_INFO.SET_APPLICATION_INFO, чтобы задать имя модуля вашей работы, и вы можете запросить v $ session, чтобы увидеть, сколько сессий в данный момент выполняет этот модуль.

Что это за работа? Хранимая процедура PL / SQL?

...