Управление SQL-планами в Oracle Database 11g - Операция массовой загрузки

ОГЛАВЛЕНИЕ


Операция массовой загрузки

Планы выполнения в операциях массовой загрузки особенно полезны, когда проводится обновление базы данных с предыдущей версии до Oracle Database 11g, или при развертывании нового приложения. Операция массовой загрузки может быть выполнена вместе с автоматическим получением плана или вместо него. Планы выполнения, которые были загружены с помощью операции массовой загрузки, автоматически принимаются для создания новых опорных планов выполнения SQL или для добавления к существующим планам. Для массовой загрузки в SQL Management Base могут быть использованы три различные методики:

  1. Заполнение планов выполнения для данного набора SQL-настроек (STS – SQL Tuning Set)
  2. Использование планов выполнения, имеющихся в настоящее время в кэше курсора
  3. Распаковка существующих опорных планов выполнения SQL из промежуточной таблицы

Из набора настроек SQL (STS)

Можно получить планы (критической) рабочей нагрузки SQL для набора настроек SQL (STS), а затем загрузить их в SQL Management Base, как опорные SQL-планы, используя для этого процедуру PL/SQL DBMS_SPM.LOAD_PLANS_FROM_SQLSET, или через Oracle Enterprise Manager (EM). При следующем выполнении этих операторов будут использованы опорные планы выполнения SQL.  
Массовая загрузка планов выполнения из STS – это превосходный способ гарантировать, что после обновления части базы данных не произойдет никаких изменений плана. Все, что требуется – это выполнить следующие четыре шага:

  1. Создайте в Oracle Database 10gR2 STS, включающий план выполнения для каждого из SQL-операторов.
  2. Загрузите STS в промежуточную таблицу и экспортируйте его в плоский файл.
  3. Импортируйте промежуточную таблицу из плоского файла в Oracle Database 11g и выгрузите STS.
  4. Используйте EM или DBMS_SPM.LOAD_PLANS_FROM_SQLSET, чтобы загрузить планы выполнения в SQL Management Base.


Рис. 2. Массовая загрузка SMB для обновления (апгрейда) базы данных с использованием STS.

Сразу после создания опорных планов выполнения SQL они начнут использоваться, гарантируя, что при переходе от 10gR2 к 11gR1 не произойдет никаких изменений плана. Если оптимизатор в базе данных Oracle 11g придумает другой план выполнения, то этот план будет добавлен к архиву планов и будет отмечен, как подлежащий проверке. Он   будет отмечен как принятый только в том случае, если его производительность будет столь же хороша, как у текущего опорного SQL-плана (для 10gR2), или лучше.

Из кэша курсора

Имеется возможность загрузить планы операторов в SQL Management Base непосредственно из кэша курсора. Применяя фильтр по имени модуля, схеме или SQL_ID,  можно идентифицировать SQL-оператор или набор из SQL-операторов, данные о которых нужно собрать. Для загрузки планов может быть использована процедура PL/SQL DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE. Или жеэто можно сделать через Oracle Enterprise Manager. При следующем выполнении этих операторов будут использоваться их опорные SQL-планы.
Загрузка планов непосредственно из кэша курсора может быть чрезвычайно полезной, если прикладные SQL-предложения были настроены вручную с применением подсказок. Так как весьма маловероятно, что входящие в состав приложения SQL-операторы могут быть изменены путем включения в них подсказок, захват настроенного плана как опорного послужит гарантией того, что прикладные SQL-операторы будут использовать этот план и в будущем.

Распаковка опорных планов из промежуточной таблицы

Развертывание нового модуля приложения означает введение в базу данных совершенно новых SQL-операторов. С Oracle Database 11g любой вендор программного обеспечения от третьих фирм может начать поставку своего прикладного программного обеспечения наряду с соответствующими опорными планами выполнения SQL для вновь вводимых SQL-операторов. Это служит гарантией, что для всех SQL-операторов, являющихся частью опорного плана выполнения SQL, сначала используются планы, про которые известно, что они давали хорошую производительность в стандартной тестовой конфигурации. Альтернативно, если приложение было разработано собственными силами или проходило тестирование внутри фирмы, правильные планы могут быть экспортированы из тестовой системы и импортированы в промышленную версию с помощью следующих шагов:

  1. В первоначальной системе создайте промежуточную таблицу, используя процедуру DBMS_SPM.CREATE_STGTAB_BASELINE
  2. Упакуйте опорные планы выполнения SQL, которые вы хотите экспортировать из базы управления SQL в промежуточную таблицу, используя для этого функцию DBMS_SPM.PACK_STGTAB_BASELINE.
  3. Экспортируйте промежуточную таблицу в плоский файл, используя команду экспорта или технологию Data Pump.
  4. Передайте полученный плоский файл в целевую систему.
  5. Импортируйте промежуточную таблицу из плоского файла, используя команду импорта или технологию Data Pump.
  6. Распакуйте опорные планы выполнения SQL из промежуточной таблицы в базу данных управления SQL в целевой системе, используя функцию DBMS_SPM.UNPACK_STGTAB_BASELINE. 

Рис. 3. Импорт опорных планов выполнения SQL из тестовой системы при реализации нового приложения