DBMS_JOB против DBMS_SCHEDULER

В чем разница между DBMS_JOB и DBMS_SCHEDULER?

Ответы

Ответ 1

С других форумов:

Хотя dbms_job все еще существует в 10g и 11g, Oracle рекомендует использовать dbms_scheduler в версиях 10g и выше. Никакие новые функции не добавляются в dbms_job, и вы, скорее всего, быстро столкнетесь с его ограничениями.

dbms_scheduler более надежный и полнофункциональный, чем dbms_job, и включает в себя следующие функции, которые dbms_job не имеет:

  • протоколирование заданий (история заданий)
  • простой, но мощный синтаксис планирования (аналогичный, но более мощный, чем синтаксис cron)
  • выполнение заданий за пределами базы данных в операционной системе
  • управление ресурсами между различными классами заданий
  • использование аргументов задания, включая передачу объектов в хранимые процедуры
  • модель безопасности на основе привилегий для заданий
  • Именование заданий и комментариев на рабочих местах
  • сохраненные, многоразовые расписания

Особенности выпусков после 10g Release 1 включают:

  • зависимости между единицами задания (10gR2 и выше)
  • планирование на основе финансовых календарей и финансовых кварталов (10gR2 и выше).
  • задания на основе событий, которые выполняются при получении события (10gR2 и выше)
  • выполнение заданий на удаленных машинах (11gR1 и выше)
  • уведомления по электронной почте о событиях, представляющих интерес (10gR2 и выше)
  • запуск задания по прибытию файла (10gR2 и выше)

Ответ 2

Одно из отличий, которое следует знать, заключается в том, что в отличие от DBMS_JOB, DBMS_SCHEDULER выполняет фиксацию, что делает ее непригодной для некоторых целей. Это также довольно громоздко для более простых требований. В то время как DBMS_JOB больше не будет улучшен, он вряд ли когда-либо будет деспопортирован, так как там должны быть тысячи систем, которые его используют, и полагаться на способ его работы, в том числе не выполнять неявное совершение транзакции, из которой он был вызван.

Подробнее см. this Ask Tom thread.

Ответ 3

Ниже перечислены некоторые из преимуществ, которые DBMS_SCHEDULER имеет для cron:

• Может сделать выполнение задания зависимым от завершения другого задания

• Надежная балансировка ресурсов и гибкие функции планирования

• Может выполнять задания на основе события базы данных

• Синтаксис DBMS_SCHEDULER работает одинаково независимо от операционной системы

• Можно запускать отчеты о состоянии с помощью словаря данных

• Если вы работаете в кластерной среде, не нужно беспокоиться о синхронизации нескольких таблиц cron для каждого node в кластере

Ниже перечислены некоторые преимущества использования cron:

• Прост в использовании, прост, проверен и прав.

• Почти универсально доступен для всех ящиков Linux/Unix; по большей части, работает почти одинаково независимо от платформы Linux/Unix (да, есть незначительные отличия)

• Агностик базы данных; работает независимо от базы данных и работает одинаково независимо от поставщика базы данных или версии базы данных

• Работает ли доступная база данных или нет