Автоматизированные задачи обслуживания — это автоматически запускаемые в базе данных задания, выполняющие операции по обслуживанию. Ниже перечислены автоматизированные задачи обслуживания в Oracle Database 11g и 12c:
- Automatic Optimizer Statistics Collection (Автоматический сбор статистики оптимизатора);
- Automatic Segment Advisor (Автоматический советник по сегментам);
- Automatic SQL Tuning Advisor (Автоматический советник по настройке SQL).
Все три задачи автоматического обслуживания запускаются во время системного окна обслуживания по умолчанию, приходящегося на ночное время. Ниже мы поговорим о предопределенных окнах обслуживания.
Предопределенные окна обслуживания
В Oracle Database 11g и 12c есть семь предопределенных окон обслуживания, которые перечислены ниже:
- MONDAY_WINDOW — начинается в 10 вечера в понедельник и заканчивается в 2 ночи;
- TUESDAY_WINDOW — начинается в 10 вечера во вторник и заканчивается в 2 ночи;
- WEDNESDAY_WINDOW — начинается в 10 вечера в среду и заканчивается в 2 ночи;
- THURSDAY_WINDOW — начинается в 10 вечера в четверг и заканчивается в 2 ночи;
- FRIDAY_WINDOW — начинается в 10 вечера в пятницу и заканчивается в 2 ночи;
- SATURDAY_WINDOW — начинается в 6 утра в субботу и заканчивается в 2 ночи;
- SUNDAY_WINDOW — начинается в 6 утра в воскресенье и заканчивается в 2 ночи.
Окна рабочих дней недели открыты в течение 4 часов, а окна выходных — в течение 20 часов. Эти семь окон обслуживания входят в группу, именуемую MAINTENANCE_WINDOW_GROUP. Окнами обслуживания можно управлять, изменяя их время начала и конца. Можно также создавать свои окна обслуживания и удалять или отключать окна по умолчанию. В следующих разделах будет показано, как это делать.
Управление автоматизированными задачами обслуживания
Поскольку база данных не назначает постоянных заданий Scheduler трем автоматизированным задачам обслуживания, ими нельзя управлять с помощью пакета DBMS_SCHEDULER. Если необходимо выполнять тонко настроенные задачи обслуживания, которые модифицируют автоматизированные задачи обслуживания, следует использовать пакет DBMS_AUTO_TASK_ADMIN.
Мониторинг автоматизированных задач обслуживания
Для получения подробной информации относительно выполнения автоматизированных заданий обслуживания в базе данных потребуется запросить представления DBA_AUTOTASK_CLIENT и DBA_AUTOTASK_OPERATION. Эти два представления совместно используют множество столбцов. Ниже показан запрос к представлению DBA_AUTOTASK_CLIENT:
SQL> SELECT client_name, status, 2 attributes, window_group,service_name 3 FROM dba_autotask_client; CLIENT_NAME STATUS ATTRIBUTES -------------------- -------- ------------------------------------- auto optimizer ENABLED ON BY DEFAULT, VOLATILE, SAFE TO KILL statistics collection auto space advisor ENABLED ON BY DEFAULT, VOLATILE, SAFE TO KILL sql tuning advisor ENABLED ONCE PER WINDOW, ON BY DEFAULT; VOLATILE, SAFE TO KILL SQL>
Столбец ATTRIBUTES показывает, что все три автоматизированные задачи обслуживания по умолчанию включены, о чем свидетельствует атрибут ON BY DEFAULT. Когда открывается окно обслуживания, база данных автоматически создает три автоматизированных задачи обслуживания и выполняет эти задания. Однако только задача SQL Tuning Advisor показывает атрибут OPEN PER WINDOW. Это потому, что база данных выполняет обе задачи — Automatic Optimizer Statistics Collection и Auto Space Advisor — более одного раза, если позволяют размеры окна обслуживания, в то время, как SQL Tuning Advisor выполняется на протяжении окна обслуживания только один раз.
База данных присваивает клиентское имя каждой из автоматизированных задач обслуживания, чтобы они выглядели как клиенты. Задание Scheduler, ассоциированное с тремя клиентами, получает имя операции, поскольку задания считаются операциями. Вот имена операций, ассоциированные с каждой из трех автоматизированных задач обслуживания:
SQL> SELECT client_name, operation_nameFROM dba_autotask_operation; CLIENT_NAME OPERATION_NAME --------------------------------- ----------------------- auto optimizer stats collection auto optimizer stats job auto space advisor auto space advisor job sql tuning advisor automatic sql tuning task SQL>
Включение задачи обслуживания
Выполните процедуру ENABLE, чтобы включить ранее отключенного клиента или операцию, как показано ниже:
SQL> begin 2 dbms_auto_task_admin.enable 3 (client_name => 'sql tuning advisor', 4 operation => 'automatic sql tuning task', 5 window_name => 'monday_window'); 6* end; SQL> / PL/SQL procedure successfully completed. SQL>
Извлечь атрибуты CLIENT_NAME и OPERATION_NAME можно, опросив представления DBA_AUTOTASK_CLIENT и DBA_AUTOTASK_OPERATION.
Отключение задачи обслуживания
С помощью процедуры DISABLE можно отключить любое из трех заданий обслуживания во время определенного окна обслуживания:
SQL> begin 2 dbms_auto_task_admin.disable 3 (client_name => 'sql tuning advisor', 4 operation => 'automatic sql tuning task', 5 window_name => 'monday_window'); 6* end; SQL> / PL/SQL procedure successfully completed. SQL>
В приведенном примере задача SQL Tuning Advisory отключается только во время MODAY_WINDOW и остается включенной во всех остальных окнах.
Реализация автоматизированных задач обслуживания
Процесс ABR (Autotask Background Process — фоновый процесс автоматизированных задач) отвечает за реализацию трех автоматизированных задач обслуживания, преобразуя их в задания Scheduler. Для каждой из этих задач ABR создает список заданий и назначает им приоритеты. Есть три уровня приоритета: высокий, средний и срочный. Scheduler также создает классы заданий и отображает группу потребителей на соответствующий класс заданий. ABR назначает задания в каждый класс заданий, а классы заданий отображают задания на группы потребителей на основе уровня приоритета задания. Фоновый процесс MMON осуществляет перезапуск и отслеживает процесс ABR. Представление DBA_AUTOTASK показывает задания, хранящиеся в репозитории ABR, которым служит табличное пространство Sysaux.
Просматривать репозиторий ABR можно путем опроса представления DBA_AUTOTASK_TASK.
Выделение ресурсов автоматическим задачам
План ресурсов по умолчанию, назначаемый всем окнам обслуживания — это DEFAULT_MAINTENANCE_PLAN. Когда окно обслуживания открывается, база данных активизирует DEFAULT_MAINTENANCE_PLAN для контроля ресурсов центрального процессора, используемых автоматическими задачами обслуживания. Три автоматических задачи обслуживания запускаются под ORA$AUTOTASK_SUB_PLAN — подпланом DEFAULT_MAINTENANCE_PLAN. Выделение ресурсов для автоматизированных задач можно изменить, изменяя выделение ресурсов этому подплану для конкретного окна обслуживания.