Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Топовые новости

Инструкции DROP советы и хитрости Oracle

Платформа Oracle поддерживает в инструкции DROP большинство ключевых слов стандарта ANSI, а также множество дополнительных ключевых слов, соответствующих объектам, поддерживаемым только в Oracle. Синтаксис следующий.

DROP {CLUSTER | CONTEXT | DATABASE | DATABASE LINK | DIMENSION | DIRECTORY | FUNCTION |

INDEX | INDEXTYPE | JAVA | LIBRARY | MATERIALIZED VIEW | MATERIALIZED VIEW LOG |

OPERATOR | OUTLINE | PACKAGE | PROCEDURE | PROFILE | ROLE | ROLLBACK SEGMENT | SEQUENCE |

SYNONYM | TABLE | TABLESPACE | TRIGGER | TYPE | TYPE BODY | USER | VIEW} имя_объекта

Правила использования инструкции DROP не такие четкие, как в стандарте ANSI, поэтому ниже приводится полный синтаксис каждого варианта инструкции DROP.

CLUSTER имя_кластера [INCLUDING TABLES [CASCADE CONSTRAINTS]]

Указанный кластер удаляется из базы данных. (Обратите внимание, что эта инструкция удаляет кластер, а не исключает конкретную таблицу из кластера.) При указании предложения INCLUDING TABLES удаляются все таблицы, принадлежащие к кластеру. При использовании предложения CASCADE CONSTRAINTS удаляются все ограничения, служащие для обеспечения ссылочной целостности, которые связаны с таблицами кластера. Инструкция DROP CLUSTER не будет выполнена без предложения CASCADE CONSTRAINTS, если в таблицах, не входящих в кластер, имеются ограничения (например, первичные или внешние ключи), которые ссылаются на таблицы кластера. Например:

DROP CLUSTER hr INCLUDE TABLES CASCADE CONSTRAINTS;

CONTEXT пространство_имен

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

DR0P CONTEXT hr_context

DATABASE

База данных удаляется с сервера Oracle.

[PUBLIC] DATABASE LINK имя связи с_базой_данных

Из базы данных удаляется указанная связь с базой данных. Чтобы удалить публичную связь с базой данных, вы должны указать ключевое слово PUBLIC. Заметьте, что связь с базой данных не может быть квалифицирована в схему. Например, чтобы удалить базу данных с именем hq.southeast.tenn, используется следующая инструкция.

DROP DATABASE LINK hq.southeast.tenn

DIMENSION имя_измерения

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

DIRECTORY имя директории

Указанный объект-директория удаляется из базы данных. Не следует применять эту инструкцию к директориям, содержащим файлы, к которым обращаются программы PL/SQL и ОС1. В качестве примера удалим директорию image_files.

DROP DIRECTORY image_files;

FUNCTION имя_функции

Удаляется указанная функция, если она не является компонентом пакета. Если вы хотите удалить функцию из пакета, используйте инструкцию CREATE PACKAGE…OR REPLACE, чтобы переопределить пакет, исключив оттуда функцию, которую вы хотите убрать. Все локальные объекты, которые зависят от функции или вызывают ее, становятся неработоспособными, а во всех статистических типах, которые связаны с этой функцией, эта связь разрывается.

INDEX имя_индекса [FORCE]

Указанный индекс или предметный индекс (domain index) удаляется из базы данных. При удалении индекса все объекты, зависящие от родительской таблицы, становятся неработоспособными, в том числе представления, пакеты, функции и хранимые процедуры. При удалении индекса неработоспособными становятся курсоры и планы выполнения, использующие этот индекс, и при следующем выполнении затронутых этой операцией инструкций SQL будет выполняться сложная обработка.

Индексы, за исключением индекс-таблиц, являются вторичными объектами, их можно удалять и создавать заново без потери пользовательских данных. Индекс-таблицы (index-organized tables, ЮТ), которые объединяют в одной структуре табличные и индексные данные, нельзя удалять и создавать снова таким же образом. Индекс-таблицы следует удалять с помощью инструкции DROP TABLE. Если вы удаляете секционированный индекс, удаляются все его разделы. Если вы удаляете индекс с комбинированным секционированием, то удаляются все разделы и подразделы индекса. Если вы удаляете предметный индекс, то вся статистика, связанная с предметным индексом, удаляется, а связи статистических типов разрываются. Дополнительно ключевое слово FORCE применяется только при удалении предметных индексов. Предложение FORCE позволяет удалить предметный индекс, помеченный как IN PROGRESS, или удалить предметный индекс, если вызов его подпрограммы для индексного типа (indextype) возвращает ошибку. Пример:

DROP INDEX ndx_sales_salesperson_quota;

INDEXTYPE имя_индексного_типа [FORCE]

Удаляется указанный индексный тип, вместе со всеми связанными статистическими типами. Система Oracle также удаляет всю статистику, собранную статистическим типом. При указании дополнительного ключевого слова FORCE статистический тип удаляется, даже если на него ссылается один или несколько предметных индексов, а соответствующие предметные индексы помечаются как нерабочие (INVALID). Если вы не используете предложение FORCE при удалении индексного типа, на который ссылаются один или несколько предметных индексов, то инструкция выполнена не будет. Пример:

DROP INDEXTYPE imageindextype FORCE;

JAVA [SOURCE | CLASS RESOURCE] ‘имя_объектаJava’

Удаляется указанный источник данных Java, класс Java или объект схемы — ресурс Java. При указании предложения SOURCE удаляется объект схемы — источник данных Java и все объекты схемы — классы Java, являющиеся его производными. При указании ключевого слова RESOURCE будет удален объект схемы — ресурс Java. Например, чтобы удалить источник MyJavaSource и все зависимые от него объекты схемы, используется следующая команда. DROP JAVA SOURCE ‘MyJavaSource’

LIBRARY имя библиотеки

Удаляется указанная библиотека внешних процедур.

Источник