Базы данных Oracle - статьи

         

и сложный механизм, требующий выполнения


СУБД Oracle — большой и сложный механизм, требующий выполнения определенных плановых работ, таких как сбор статистики о хранимых объектах или сбор/чистка внутренней информации. Необходимость осуществлять плановый запуск работ могут испытывать и пользователи БД.
Первый механизм планового запуска появился в версии 7 для поддержки автоматических обновлений снимков (snapshots), как поначалу именовались нынешние материализованные виртуальные таблицы (materialized views). В версии 8 этот механизм был открыт для обычных пользователей через посредство некоторых параметров СУБД, таблиц словаря-справочника, а также пакета DBMS_JOB. Пакет DBMS_JOB позволял (и позволяет) запускать хранимую процедуру, или же неименованный блок PL/SQL в моменты времени, вычисляемые по указанной пользователем формуле.
К версии 10 такое устройство имевшегося планировщика заданий было сочтено слишком примитивным, и в ней появился новый планировщик, значительно более проработанный. Он использует следующие основные понятия:

  • Schedule (расписание)
  • Program (программа)
  • Job (плановое задание = расписание + программа)

Кроме того, с ним связаны дополнительные, более специфичные понятия:

  • Job class (класс заданий)
  • Window и window group (ресурсное «окошко», интервал для автоматического включения ресурсного плана СУБД и группа окошек)
  • Chain (цепочка заданий)
  • Event schedule (возможность запустить задание по событию, зафиксированному по сообщению из очереди AQ)

В отличие от старого планировщика, в новом «программой» может быть не только блок PL/SQL, но и хранимая процедура на PL/SQL или на Java, внешняя процедура на С или даже команда ОС. Последнее означает, что Oracle отменяет необходимость использовать специфичные для разных платформ планировщики заданий ОС (cron, at) при построении БД-центричного приложения. Вдобавок, сам запуск заданий получил возможность учета текущей вычислительной обстановки в СУБД, а также желаемой приоритетности среди прочих заданий.
Как и в случае со старым планировщиком, новый, по сути, представляет собой элемент ядра СУБД, доступ пользователя к которому предоставляется посредством программной логики и элементов схемы БД. Именно, в распоряжении пользователя имеется следующее:



  • таблицы словаря-справочника LIKE '%SCHEDULER_%' (DBA_SCHEDULER_JOBS, DBA_SCHEDULER_JOB_LOG и прочие);
  • несколько типов объектов хранения, как то:

  • JOB
  • SCHEDULE
  • PROGRAM
  • JOB CLASS,
ряд других;
  • системные привилегии:

    • CREATE SESSION
    • CREATE JOB
    • CREATE ANY JOB
    • EXECUTE ANY PROGRAM
    • EXECUTE ANY CLASS
    • MANAGE SCHEDULER
    • CREATE EXTERNAL JOB, и объединяющая их роль SCHEDULERADMIN;
    • объектные привилегии:

      • EXECUTE
      • ALTER
      • ALL, распространяющиеся на объекты типов JOB, SCHEDULE, PROGRAM и JOB CLASS;
      • пакет DBMS_SCHEDULER.

      • Версия 11 дополнила планировщик возможностями:

        • запуска «легковесных» заданий, делающей реальным их создание и удаление сотнями за секунду;
        • запуска заданий на удаленных машинах посредством использования специального агента;
        • запуска заданий только на основной БД физического горячего резерва или на страхующей БД логического резерва.

        Некоторые ключевые моменты использования планировщика в Oracle 10 рассматриваются ниже на примерах.

        Содержание раздела