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

1 ... 201 202 203 [ 204 ] 205 206 207 ... 469


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

OWNER NAME

TKYTE THE OUTLINE

system@TKYTE816> create outline the outline

2 on select * from dual; on select * from dual

ERROR at line 2:

ORA-18004: outline already exists system@TKYTE816> drop outline the outline; Outline dropped.

system@TKYTE816> select owner, name from dba outlines; no rows selected

Итак, как видите, пользователь SYSTEM не может создать второй шаблон с именем THE OUTLINE, пока не использует оператор CREATE OR REPLACE (который перепишет существующий шаблон) или не удалит уже существующий шаблон. (Обратите внимание: уточнять имя шаблона именем схемы, ВЛАДЕЛЕЦ.ИМЯ ШАБЛОНА, как в случае других объектов, нет необходимости).

Это надо учитывать, чтобы случайно не переписать чужой шаблон. При неявном создании шаблонов путем установки параметра ALTER SESSION SET CREATE STORED OUTLINES эта проблема не возникает, поскольку уникальное имя шаблона будет сгенерировано сервером. Проблема может возникнуть при явном создании и именовании шаблонов.

Ошибки, которые можно допустить

В этом разделе перечислены ошибки, которые можно допустить при работе с шаблонами.

ORA-18001 не указаны операторы для ALTER OUTLINE

* Причина: При разборе оказалось, что не указана необходимая конструкция в команде

* Действие: Повторно выполните оператор, указав все необходимые конструкции ALTER OUTLINE.

Это сообщение об ошибке выдается только при неправильном использовании оператора ALTER OUTLINE. Например:

ops$tkyte@DEV816> alter outline xxxx

2 /

alter outline xxxx

ERROR at line 1:

ORA-18001: no options specified for ALTER OUTLINE

Текст сообщения об ошибке первоначально приведен так, как он выдается СУБД Oracle версии 8.1.6.0.0 при установке русского языка для сообщений. Обратите внимание на несоответствие терминологии, предлагаемой компанией Oracle. В примерах оставлены сообщения на английском языке. - Прим. научи, ред.




Глава 11

Решение простое: укажите одну из трех допустим1х опций (RENAME, REBUILD, CHANGE) оператора и выполните его повторно. Подробнее об этом см. в разделе Управление шаблонами .

ORA-18002 указанный вариант не существует

* Причина: Шаблон либо не существует, либо был удален или изменен другим потоком.

* Действие:

Это сообщение об ошибке тоже вполне очевидно. Указанного шаблона больше нет: либо его никогда не было, либо кто-то его удалил.

ORA-18003 вариант с данной сигнатурой уже существует

* Причина: Алгоритм генерации сигнатур создает сигнатуры длиной 16 байт, так что совпадение сигнатур весьма маловероятно. Это сообщение

выдается в случае такого совпадения.

* Действие: Выполните повторно оператор, который привел х созданию шаблона, добавив в текст пробел, или отнесите шаблон к

другой категории.

Мне не удалось придумать тестовый пример для этого сообщения об ошибке; если вы его получили, значит, вам сильно не повезло. Сигнатуры запросов позволяют быстро их находить. Поскольку запросы могут быть очень длинными, для поиска используются числовые сигнатуры.

ORA-18004 вариант уже существует

II * Причина: Шаблон с указанным именем или для данного SQL-оператора уже существует.

* Действие:

Это сообщение об ошибке самоочевидно. Вы попытались создать шаблон с явно указанным именем, но шаблон с таким именем уже существует. Можно сделать следующее:

выбрать другое имя;

использовать оператор CREATE OR REPLACE и переписать существующий шаблон;

удалить существующий шаблон, а затем создать новый с таким же именем. ORA-18005-18007

Эти три сообщения об ошибках тесно взаимосвязаны, поэтому я опишу причины всех трех вместе:

ORA-18005 для этой операции требуется привилегия CREATE ANY OUTLINE .

ORA-18006 для этой операции требуется привилегия DROP ANY OUTLINE .

ORA-18007 для этой операции требуется привилегия ALTER ANY OUTLINE .

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



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

странным, особенно при работе с собственными шаблонами. Как объяснялось в разделе Проблемы , шаблоны никому не принадлежат; их имена - глобальны (как имена табличных пространств). Поэтому пользователь может создать шаблон с помощью CREATE, но затем не сможет удалить или изменить его. Другой пользователь может изменять шаблоны, но не может создавать или удалять их и т.д.

Подробнее о необходимых привилегиях см. в разделе Привилегии, необходимые для работы с хранимыми шаблонами .

Резюме

В этой главе подробно рассмотрена возможность стабилизации плана оптимизатора, поддерживаемая в СУБД Oracle8i. Эта возможность позволяет стабилизировать производительность SQL-операторов, независимо от изменений в базе данных (например, обновления версии сервера, изменения параметров инициализации и т.д.). Был представлен ряд других полезных вариантов использования этой возможности, например, для настройки производительности приложений, которые по любой причине нельзя изменять, для поиска используемых индексов, получения списка выполняемых SQL-опера-торов и т.п. Использование хранимых шаблонов не требует изменения приложения и влечет минимальные дополнительные расходы ресурсов во время выполнения. Надо учитывать ряд проблем, связанных с использованием хранимых шаблонов; но если помнить об этом, хранимые шаблоны сослужат хорошую службу.



1 ... 201 202 203 [ 204 ] 205 206 207 ... 469

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