Модуль позволяет запланировать автоматическое выполнение блока PL/SQL в указанное время, аналогично UNLX-утилите сгоп. Блок будет выполняться одним из фоновых процессов Oracle. Чтобы реализовать это, необходимо задать два параметра.
JOB_QUEUE_PROCESSES определяет число запускаемых фоновых процессов. Если он равен 0 или не установлен, фоновых процессов для заданий не будет и они не будут выполняться.
JOB_QUEUE_lNTERVAL определяет количество времени в секундах, которое каждый процесс будет ожидать, прежде чем проверить наличие нового задания. Задание нельзя выполнить более одного раза в течение JOB_QUEUE_INTERVAL секунд.
Предположим, что создана следующая процедура Templnsert:
Мы можем запускать Templnsert на выполнение каждые 90 секунд с помощью следующего сценария
Процедура SUBMIT будет отправлять задание на выполнение. Задание запускается немедленно и затем последовательно выполняется с интервалом 90 секунд на основе выражения + (90/(24*60*60)), которое указывает время следующего запуска задания.
Обратите внимание, что COMMIT вызывается в обоих блоках, определяющих задания, и в самой процедуре Templnsert. В первом случае это необходимо для запуска задания, а во втором изменения, произведенные заданием, будут автоматически откатываться по завершении задания.
В приведенном примере задание будет выполняться бесконечно, пока база данных не будет остановлена. Его можно удалить, вызвав функцию DBMS TOB.REMOVE:
< Предыдущая | Следующая > |
---|