![]() |
|
Программирование >> Oracle
Стабилизация плана оптимизатора 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-опера-торов и т.п. Использование хранимых шаблонов не требует изменения приложения и влечет минимальные дополнительные расходы ресурсов во время выполнения. Надо учитывать ряд проблем, связанных с использованием хранимых шаблонов; но если помнить об этом, хранимые шаблоны сослужат хорошую службу.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |