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 (да, есть незначительные отличия)
• Агностик базы данных; работает независимо от базы данных и работает одинаково независимо от поставщика базы данных или версии базы данных
• Работает ли доступная база данных или нет