Управление SQL-планами в Oracle Database 11g - Мониторинг SQL PLAN MANAGEMENT

ОГЛАВЛЕНИЕ

Мониторинг SQL PLAN MANAGEMENT

Для ведения мониторинга SPM используйте EMDBControl
или новое словарное представление DBA_SQL_PLAN_BASELINES.

Для ведения мониторинга функциональности SPM в Oracle Database 11g было введено несколько новых экранов управления предприятием и представлений АБД.

Enterprise Manager

Все аспекты управления и мониторинга опорных SQL-планов могут быть выполнены через Enterprise Manager Database Control.

Начало работы

Чтобы попасть на страницу опорного плана выполнения SQL:
  1. Обратитесь к домашней странице базы данных в Enterprise Manager.
  2. В верхней части страницы кликните по кнопке Server, чтобы отобразить страницу сервера.
  3. В разделе оптимизатора запросов кликните по кнопке SQL Plan Control.
  4. Появится страница SQL Plan Control. См. интерактивную справку для получения информации об этой странице.
  5. В верхней части страницы кликните по кнопке SQL Plan Baseline, чтобы отобразить подстраницу опорных планов SQL.


Рис. 6. Домашняя страница опорного плана в Oracle Enterprise Manager DB Control

С основной страницы можно управлять параметрами init.ora, планировать задания по загрузке или эволюции, а также изменять некоторые атрибуты существующих опорных планов SQL.

Изменение значений параметров init.ora

В левой верхней стороне основной страницы опорного плана имеется раздел установок, в котором перечисляются параметры, контролирующие SQL Plan Management. Достаточно беглого взгляда на этот раздел, чтобы понять, включен или нет автоматическое получение опорных планов, а также понять, используется или нет опорный план SQL. Для изменения значения параметра init.ora:

  1. Кликните по значению параметра
  2. Откроется страница параметра инициализации. В выпадающем меню выберите значение, которое вы хотите присвоить параметру
  3. Кликните по OK


Рис. 7. Установка в EM связанных с SPM параметров файла init.ora

Массовая загрузка планов

Можно загрузить планы прямо из кэша курсора, используя кнопку загрузки с правой стороны над списком опорных планов SQL. Можно загрузить планы для всех операторов в кэше курсора, или же можно выбрать подмножество планов.

  1. Кликните по кнопке загрузки
  2. Появится страница загрузки опорного плана SQL. Выберите переключатель загрузки планов для “load from the cursor cache” ("загрузка из кэша курсора")
  3. Вручную введите один или несколько SQL_ID или кликните по иконке с фонариком, чтобы увидеть список всех SQL_ID и текст SQL для каждого плана в кэше курсора.
  4. После выбора SQL_ID заполните информацию, связанную с планированием задания (по умолчанию – немедленная загрузка)
  5. Кликните по OK


Рисунок 8. Массовая загрузка опорных планов SQL из курсора кэша в EM

Изменение атрибутов

С основной страницы опорного плана SQL можно изменить любой атрибут опорного плана. Для изменения атрибута
  1. Кликните по кнопке-выключателю перед опорным планом
  2. Кликните по кнопке атрибута, который вы желаете изменить
  3. Появится окно диалога, в котором вам будет предложено подтвердить ваш выбор. Кликните по OK

Просмотр плана выполнения опорного плана SQL

Чтобы просмотреть фактический план выполнения для опорного плана SQL, кликните по имени плана. Для рассмотрения планов выполнения из опорных планов для данного оператора SQL кликните по кнопке SQL Text.

Эволюция опорного плана SQL

Находясь на основной странице опорного плана SQL, можно увидеть, какие планы приняты, а какие – нет.  Если вы захотите проследить эволюцию непринятого плана:
  1. Кликните по кнопке-выключателю перед планом и выберите расположенную над ней кнопку evolve
  2. Откроется страница эволюции опорного плана SQL с тремя вариантами кнопки-выключателя:

  3. a.     Verify Performance (проверить производительность) – если надо иметь гарантии, что непринятый план выполняется столь же хорошо, как существующий опорный план выполнения SQL, или даже лучше его, выберите YES. Если вы уже знаете, что непринятый план имеет хорошую производительность, и хотели бы обойти проверку, выберите NO.
    b.     Time Limit(ограничение времени) – применяется только в том случае, если в поле Verify Performance выбрано Yes. Режим Auto (Авто) означает, что Oracle сама решит, как много времени расходовать на подтверждение производительности непринятых планов. Режим Unlimited (Неограниченное) означает, что процесс проверки плана будет выполняться вплоть до его завершения. Specify (Определить) означает, что нужно установить временной лимит для процесса проверки плана.
    c.     Action (Действие) – хотите ли вы, чтобы новый план был автоматически принят, или вы просто хотите получить на выходе отчет о результатах проверки процесса, базируясь на котором вы сможете решить, принимать новый план, или нет.
  4. Кликните по OK
  5. Появится основная страница опорного плана SQL. Вы должны увидеть, что эволюционирует задание, перечисленное в разделе заданий в правой верхней стороне страницы. (В случае необходимости кликните по кнопке обновления (refresh)).


Рис. 8. Эволюция плана

Мониторинг SPM через представления АБД

В представлении DBA_SQL_PLAN_BASELINES представлена информация об опорных планах SQL, которые в данный момент созданы для конкретных SQL-операторов.

select sql_handle, sql_text, plan_name, origin,
enabled, accepted, fixed, autopurge
from dba_sqljplan_baselines;

Этот оператор select возвращает следующие строки:


В этом примере у одного и того же SQL-оператора имеется два плана, причем оба они были получены автоматически. Один из планов (SYS_SQL_PLAN_4be) является опорным планом для плана выполнения, поскольку он является и допустимым, и принятым. Другой план (SYS_SQL_PLAN_lea) – это непринятый план, который был поставлен в очередь для изменения или проверки. Он был автоматически получен и поставлен в очередь для проверки; значение параметра accepted для него установлено на NO. Ни один из планов не является фиксированным, и оба они подлежат автоматической чистке.

Чтобы проверить детализированный план выполнения для любого опорного плана, можно использовать процедуру DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE.

Кроме того, если изучить представление V$SQL, появляется возможность проверить, использует ли SQL-оператор опорный план. Если SQ-оператор использует опорный план SQL plan, то plan_name для плана, выбранного из опорного плана SQL, будет содержаться в столбце sql_plan_baseline представления V$SQL. Можно соединить представление V$SQL и представление DBA_SQL_PLAN_BASELINES, используя следующий запрос:

Select s.sql_text, b.plan_name, b.origin, b.accepted
From dba_sql_plan_baselines b, v$sql s
Where s. exact_matching_signature = b.signature
And   s.SQL_PLAN_BASELINE = b.plan_name;