Программирование >>  Oracle 

1 ... 196 197 198 [ 199 ] 200 201 202 ... 469


Глава 11

3 on select * lim all objects

4 / Outline created.

tkyte@TKYTE816> select name, category, sql text from user outlines;

NAME CATEGORY SQL TEXT

MY OUTLINE M CATEGORY select * from

all objects

tkyte@TKYTE816> select count(*) from user outline hints

Where name = MY OUTLINE ;

COUNT (*)

Итак, мы работаем с шаблоном MY OUTLINE в категории MY CATEGORY, с которым сейчас связано 138 подсказок (у вас результат может быть другим, в зависимости от установок оптимизатора).

Прежде всего, оператор ALTER OUTLINE позволяет переименовать хранимый шаблон. Эта версия оператора имеет следующий синтаксис:

alter outline имяшаблона rename to новоеимя

Итак, применим этот оператор для переименования шаблона с MY OUTLINE в PLAN FOR ALL OBJECTS следующим образом:

tkyte@TKYTE816> alter outline my outline rename to plan for all objects 2 /

Outline altered.

Простой запрос позволяет проверить, сработало ли все, как предполагалось:

tkyte@TKYTE816> select name, category, sql text from user outlines 2 /

NAME CATEGORY SQL TEXT

PLAN FOR ALL OBJECTS MY CATEGORY select * from

all objects

Следующий шаг - изменить с помощью оператора ALTER OUTLINE категорию, в которой хранится шаблон. Эта версия оператора имеет следующий синтаксис:

alter outline иня таблона change category to новое имя категории;

Итак, переведем наш хранимый шаблон из категории MY CATEGORY в категорию DICTIONARY PLANS:

tkyte@TKYTE816> alter outline plan for all objects change category to

2 dictionary plans

Outline altered.



Стабилизация плана оптимизатора 631

tkyte@TKYTE816> select name, category, sql text from user outlines 2 /

NAME CATEGORY SQL TEXT

PLAN FOR ALL OBJECTS DICTIONARY PLANS select * from

all objects

Тут тоже все понятно. Оператор ALTER OUTLINE просто изменяет имя категории в пользовательской схеме OUTLN. Чтобы продемонстрировать последний вариант использования оператора ALTER OUTLINE, пересоздадим план выполнения запроса в текущей среде. Синтаксис оператора в этом случае:

alter outline имя таблона rebuild;

В настоящий момент в используемом сеансе SQL*Plus параметр OPTIMIZER GOAL имеет значение CHOOSE. Поскольку объекты словаря не проанализированы, для запроса используется оптимизатор, основанный на правилах (если режим оптимизации - CHOOSE и объекты в запросе не проанализированы, используется оптимизатор, основанный на правилах). Установим цель оптимизации ALL ROWS, что требует использовать оптимизатор, основанный на стоимости, и перестроим план.

tkyte@TKYTE816> alter session set optimizer goal = all rows 2 /

Session altered.

tkyte@TKYTE816> alter outline plan for all objects rebuild

2 / Outline altered.

Получив количество подсказок в шаблоне, можно убедиться, что сгенерированный план перестроен и отличается от исходного:

tkyte@TKYTE816> SELE COUNT (*)

2 FROM USER OUTLINE HINTS

3 WHERE NAME = PLAN FOR ALL OBJECTS

COUNT(*) 139

План, несомненно, отличается: теперь подсказок 139 и запрос оптимизирован в режиме ALL ROWS, а не CHOOSE.

Оператор DROP OUTLINE

Оператор удаления шаблона - очень простой. Он имеет следующий синтаксис: drop outline имяигаблона;

Продолжая пример, используем этот оператор ЯОД для удаления существующего хранимого шаблона:



Глава 11

tkyte@TKYTE816> drop outline plan for all objects 2 /

Outline dropped.

tkyte@TKYTE816> select * from user outlines; no rows selected

Как вы могли убедиться, все очень просто. В следующем разделе будут описаны более гибкие процедуры для работы с группами шаблонов.

Пакет OUTLN PKG

Перейдем теперь к пакету OUTLN PKG. Этот пакет создавался:

Для поддержки множественных операций с шаблонами, таких как удаление не-

используемых хранимых шаблонов, удаление шаблонов определенной категории и т.д. Это можно сделать и с помощью операторов ALTER и DROP, но только по одному шаблону. Пакет OUTLN PKG предлагает набор процедур для работы с несколькими шаблонами одним оператором.

Чтобы предоставить набор процедур для утилит ЕХР и IMP, обеспечивающих экспорт и импорт хранимых шаблонов.

Мы опишем и продемонстрируем использование процедур пакета OUTLN PKG для множественных операций. Мы не будем затрагивать процедуры пакета, предназначенные для поддержки экспорта и импорта. Эти процедуры не описаны в документации и не предназначены для вызова из другой среды, кроме утилит IMP и ЕХР.

Пакет OUTLN PKG создается сценариями dbmsol.sql и prvtol.plb, которые находятся в каталоге [ORACLE HOME]/rdbms/admin. Эти сценарии вызываются сценарием catproc.sql (который находится в том же каталоге) и создают пакет в базе данных по умолчанию. Помимо создания пакета OUTLN PKG, эти сценарии вставляют необходимые строки в соответствующие таблицы словаря данных, чтобы зарегистрировать его функции для использования утилитами EXP/IMP. Пакет должен устанавливаться пользователем SYS или INTERNAL с помощью утилиты SVRMGRL. Поскольку пакет автоматически устанавливается при обновлении или установке сервера, выполнять сценарий установки вручную не понадобится.

В пакете OUTLN PKG есть три процедуры, которые нас интересуют:

DROP UNUSED. Удаляет все шаблоны, в столбце USED которых находится значение UNUSED. Это хранимые шаблоны, сгенерированные, но ни разу не использовавшиеся для переписывания запроса.

DROP BY CAT. Удаляет все шаблоны указанной категории. Если оказалось, что вся категория хранимых шаблонов больше не нужна, можно удалить их одной командой, а не выполнять оператор DROP OUTLINE для каждого шаблона по очереди.

UPDATE BY CAT. Переименовывает категорию глобально, изменяя все входящие в нее шаблоны.



1 ... 196 197 198 [ 199 ] 200 201 202 ... 469

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика