DeepEdit!

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

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

Модуль DBMS_JOB

Модуль позволяет запланировать автоматическое выполнение блока 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:
 









jAntivirus