Как удалить табличное пространство

Иногда нужно избавиться от табличного пространства. Удалить табличное пространство из базы Oracle Database можно, выполнив следующую команду:

SQL> DROP TABLESPACE test01; 

Если табличное пространство test01 включает таблицы или индексы на момент ввода команды DROP TABLESPACE, то вы получите ошибку. Вы можете либо переместить все объекты в другое табличное пространство, либо, если эти объекты не нужны, просто использовать следующую команду, которая уничтожит табличное пространство вместе со всеми объектами, входящими в него:

SQL> DROP TABLESPACE test01 INCLUDING CONTENTS; 

Внимание! В Oracle Database 10g объекты базы, такие как таблицы, не уничтожаются окончательно при выдаче команды DROP TABLE. Вместо этого они отправляются в корзину (Recycle Bin), откуда их можно потом восстановить. При использовании команды DROP TABLESPACE...INCLUDING CONTENTS объекты табличного пространства уничтожаются окончательно, не попадая в корзину! Любые объекты, относящиеся к этому табличному пространству и находящиеся в корзине, также уничтожаются безвозвратно при выполнении этой команды. Если опустить конструкцию INCLUDING CONTENTS, а табличное пространство содержит объекты, оператор даст сбой, но при этом все объекты из корзины все-таки будут уничтожены.


Оператор DROP TABLESPACE...INCLUDING CONTENTS не освободит файлы данных для операционной системы. Чтобы сделать это, потребуется либо вручную удалить файлы данных, бывшие частью табличного пространства, либо выполнить следующую команду, чтобы удалить и объекты, и файлы данных сразу:

SQL> DROP TABLESPACE test01 INCLUDING CONTENTS AND DATAFILES; 

Приведенный оператор автоматически уничтожит файлы данных вместе с табличным пространством.

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

SQL> DROP TABLESPACE test01 CASCADE CONSTRAINTS; 

Единственное табличное пространство, которое нельзя уничтожить — это, конечно,ваше табличное пространство System. Кроме того, во время обычной операции базы данных невозможно уничтожить табличное пространство Sysaux. Однако имея привилегию SYSDBA и запустив базу данных в режиме MIGRATE, удалить табличное пространство Sysaux можно.

Разумеется, что причин для уничтожения табличного пространства Sysaux не так много. Если просто нужно перенести определенных пользователей из этого табличного пространства, вы всегда можете воспользоваться соответствующей процедурой перемещения, специфицированной в представлении V$SYSAUX_OCCUPANTS.

Представление V$SYSAUX_OCCUPANTS покажет подробности о пространстве, занятом каждым элементом табличного пространства System. Оно также предоставит процедуру перемещения для заданного элемента, если вы захотите переместить его в другое табличное пространство. Вот простой запрос, использующий это представление:

SQL> SELECT occupant_name, schema_name, space_usage_kbytes,
2* move_procedureFROM V$SYSAUX_OCCUPANTS;
OCCUPANT_NAME     SCHEMA_NAME   SPACE_USG_KB   MOVE_PROCEDURE
-------------     -----------   ------------   --------------------------------
LOGMNR            SYSTEM        7488           SYS.DBMS_LOGMNR_D.SET_TABLESPACE
. . .
ULTRASEARCH WKSYS 7296 MOVE_WK
20 rows selected.
SQL> 

Если необходимо переместить элемент ULTRASEARCH из System в новое табличное пространство по имени ULTRA1, это можно сделать с помощью процедуры MOVE_WK, принадлежащей схеме WKYS, как показано ниже:

SQL> EXECUTE WKSYS.MOVE_WK('ULTRA1'); 

Далее в моих заметках будет представлено несколько полезных представлений словаря данных, которые помогут управлять базой данных Oracle Database. Хотя использование OEM Database Control сокращает необходимость в частом обращении к большинству из этих представлений, важно знать об их существовании и содержимом, чтобы иметь понятие, где база данных хранит важную информацию.

Вас заинтересует / Intresting for you:

Как увеличить табличное простр...
Как увеличить табличное простр... 14145 просмотров Александров Попков Tue, 21 Nov 2017, 13:18:46
Табличное пространство Oracle ...
Табличное пространство Oracle ... 7488 просмотров Antoniy Tue, 21 Nov 2017, 13:18:46
Табличные пространства Oracle:...
Табличные пространства Oracle:... 17529 просмотров Александров Попков Fri, 06 Jul 2018, 06:29:19
Временные табличные пространст...
Временные табличные пространст... 14144 просмотров Ольга Потемкина Tue, 21 Nov 2017, 13:18:46
Войдите чтобы комментировать