Как удалить схему oracle

Обновлено: 07.07.2024

Purpose

Use the DROP USER statement to remove a database user and optionally remove the user's objects.

When you drop a user, Oracle Database also purges all of that user's schema objects from the recycle bin.

Caution:

See Also:

Prerequisites

You must have the DROP USER system privilege.

Syntax


drop_user::=

Semantics

Specify the user to be dropped. Oracle Database does not drop users whose schemas contain objects unless you specify CASCADE or unless you first explicitly drop the user's objects.


CASCADE

Specify CASCADE to drop all objects in the user's schema before dropping the user. You must specify this clause to drop a user whose schema contains any objects.

If the user's schema contains tables, then Oracle Database drops the tables and automatically drops any referential integrity constraints on tables in other schemas that refer to primary and unique keys on these tables.

If this clause results in tables being dropped, then the database also drops all domain indexes created on columns of those tables and invokes appropriate drop routines.

See Also:

Oracle Database invalidates, but does not drop, the following objects in other schemas:

Views or synonyms for objects in the dropped user's schema

Stored procedures, functions, or packages that query objects in the dropped user's schema.

Oracle Database does not drop materialized views in other schemas that are based on tables in the dropped user's schema. However, because the base tables no longer exist, the materialized views in the other schemas can no longer be refreshed.

Oracle Database drops all triggers in the user's schema.

Oracle Database does not drop roles created by the user.

Caution:

Examples


Dropping a Database User: Example

If user Sidney's schema contains no objects, then you can drop sidney by issuing the statement:

If Sidney's schema contains objects, then you must use the CASCADE clause to drop sidney and the objects:

можно ли удалить все содержимое схемы в Oracle? Я нашел этот скрипт:

но я хотел бы знать, есть ли что-нибудь,чтобы отбросить все в схеме,индексах, таблицах, противопоказаниях. но не схема (drop user . ).

обычно проще всего удалить и добавить пользователя. Это предпочтительный метод, если у вас есть доступ к базе данных system или sysdba.

Если у вас нет доступа к системному уровню и вы хотите очистить свою схему, следующий sql создаст ряд состояний падения, которые затем могут быть выполнены.

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

это приведет к созданию списка операторов drop. Не все из них будут выполняться - если вы упадете с каскадом, падение индексов PK_* завершится неудачей. Но, в конце концов, у вас будет довольно чистая схема. Подтвердите:

кроме того, просто чтобы добавить, блок Pl/sql в вашем вопросе удалит только таблицы, он не удаляет все другие объекты.

ps: скопировано с какого-то сайта, мне было полезно. Проверено и работает как обаяние.

Да, вы можете. Можно удалить пользователя и таким образом удалить объекты схемы. Инструкция DROP USER используется для удаления пользователя из базы данных Oracle и всех объектов, принадлежащих этому пользователю.

Если TestDB имеет объекты в своей схеме, вам нужно будет запустить следующую инструкцию пользователя DROP:

этот оператор удалит все объекты, принадлежащие TestDB, и все ограничения ссылочной целостности объектов TestDB также будут удалены.

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

скрипт работает 100% для меня как есть-но если по какой-то причине он не завершен для вас, то он легко улучшается с помощью виртуальной машины (VM) следующим образом:

  1. войдите в систему как [ваш пользователь схемы для пустого]
  2. сделайте снимок вашей виртуальной машины
  3. запустите приведенный выше скрипт для создания удаления заявления
  4. выполнить удаление (вы можете игнорировать любые ошибки "объект не существует", так как некоторые объекты будут автоматически удалены до инструкции удаления скрипта. Это происходит в результате владения удаляемыми объектами)
  5. выход
  6. войдите в систему как SYS и выполните "drop user [ваш пользователь схемы для пустого];" -- без опции каскада

Если Шаг 6 терпит неудачу, вам нужно определить оставшиеся объекты предотвращение удаления пользователя и добавление его в вышеуказанный скрипт. Повторяйте, пока ваш пользователь не упадет (т. е. ваш скрипт является всеобъемлющим), затем сохраните свой скрипт

откат виртуальной машины к снимку и повторите шаги 3 и 4 (используя обновленный скрипт) - и теперь у вас должна быть 100% пустая схема.

В Oracle PL/SQL метод DELETE удаляет все элементы из коллекции любого типа. Эта операция немедленно освобождает память, выделенную для удаляемых элементов.

Синтаксис

Синтаксис метода коллекций DELETE в Oracle PL/SQL.

Параметры или аргументы

collection_name - имя коллекции один из следующих типов associative arrays или nested tables.
DELETE(n) - удаляет элемент, индекс которого равен n , если этот элемент существует; в противном случае он ничего не делает.
DELETE(m,n) удаляет все элементы, индексы которых находятся в диапазоне m..n , если существуют как m , так и n , а m ; в противном случае он ничего не делает.

Примечание

Пример

Рассмотрим некоторые пример, чтобы понять как использовать метод коллекций DELETE в Oracle PL/SQL.

Пример метода DELETE с Nested Tables

В этом примере мы используем Nested Tables и делаем следующее:

  1. объявляем переменную Nested Tables
  2. инициализируем ее шестью элементами
  3. удаляем и затем восстанавливаем второй элемент
  4. удаляем ряд элементов, а затем восстанавливаем один из них
  5. и в конце удаляем все элементы

Восстановленные элементы занимают ту же память, что и соответствующие удаленные элементы. Процедура print_nt печатает переменную Nested Tables после инициализации и после каждой операции DELETE.

CREATE OR REPLACE PROCEDURE print_nt (nt nt_type) IS

Пример метода DELETE с Associative Arrays

Следующий пример заполняет Associative Arrays, индексированный строкой, и удаляет все элементы, что освобождает выделенную им память. Затем пример заменяет удаленные элементы, то есть добавляет новые элементы, которые имеют те же индексы, что и удаленные элементы. Новые элементы замены не занимают ту же память, что и соответствующие удаленные элементы. Наконец, пример удаляет один элемент, а затем ряд элементов. Процедура print_aa_str показывает эффекты операций.

Use the DROP USER statement to remove a database user and optionally remove the user's objects.

When you drop a user, Oracle Database also purges all of that user's schema objects from the recycle bin.

Do not attempt to drop the users SYS or SYSTEM . Doing so will corrupt your database.

CREATE USER and ALTER USER for information on creating and modifying a user

You must have the DROP USER system privilege.

Specify the user to be dropped. Oracle Database does not drop users whose schemas contain objects unless you specify CASCADE or unless you first explicitly drop the user's objects.

Specify CASCADE to drop all objects in the user's schema before dropping the user. You must specify this clause to drop a user whose schema contains any objects.

If the user's schema contains tables, then Oracle Database drops the tables and automatically drops any referential integrity constraints on tables in other schemas that refer to primary and unique keys on these tables.

If this clause results in tables being dropped, then the database also drops all domain indexes created on columns of those tables and invokes appropriate drop routines.

Oracle Data Cartridge Developer's Guide for more information on these routines

Oracle Database invalidates, but does not drop, the following objects in other schemas:

Views or synonyms for objects in the dropped user's schema

Stored procedures, functions, or packages that query objects in the dropped user's schema

Oracle Database does not drop materialized views in other schemas that are based on tables in the dropped user's schema. However, because the base tables no longer exist, the materialized views in the other schemas can no longer be refreshed.

Oracle Database drops all triggers in the user's schema.

Oracle Database does not drop roles created by the user.

Oracle Database also drops with FORCE all types owned by the user. See the FORCE keyword of DROP TYPE.

Dropping a Database User: Example If user Sidney's schema contains no objects, then you can drop sidney by issuing the statement:

If Sidney's schema contains objects, then you must use the CASCADE clause to drop sidney and the objects:

Читайте также: