Как удалить tablespace oracle
Use the DROP TABLESPACE statement to remove a tablespace from the database.
When you drop a tablespace, Oracle Database does not place it in the recycle bin. Therefore, you cannot subsequently either purge or undrop the tablespace.
CREATE TABLESPACE and ALTER TABLESPACE for information on creating and modifying a tablespace
You must have the DROP TABLESPACE system privilege. You cannot drop a tablespace if it contains any rollback segments holding active transactions.
Specify the name of the tablespace to be dropped.
You can drop a tablespace regardless of whether it is online or offline. Oracle recommends that you take the tablespace offline before dropping it to ensure that no SQL statements in currently running transactions access any of the objects in the tablespace.
You cannot drop the SYSTEM tablespace. You can drop the SYSAUX tablespace only if you have the SYSDBA system privilege and you have started the database in UPGRADE mode.
You may want to alert any users who have been assigned the tablespace as either a default or temporary tablespace. After the tablespace has been dropped, these users cannot allocate space for objects or sort areas in the tablespace. You can reassign users new default and temporary tablespaces with the ALTER USER statement.
Any objects that were previously dropped from the tablespace and moved to the recycle bin are purged from the recycle bin. Oracle Database removes from the data dictionary all metadata about the tablespace and all data files and temp files in the tablespace. The database also automatically drops from the operating system any Oracle-managed data files and temp files in the tablespace. Other data files and temp files are not removed from the operating system unless you specify INCLUDING CONTENTS AND DATAFILES .
You cannot use this statement to drop a tablespace group. However, if tablespace is the only tablespace in a tablespace group, then Oracle Database removes the tablespace group from the data dictionary as well.
Restrictions on Dropping Tablespaces
Dropping tablespaces is subject to the following restrictions:
You cannot drop a tablespace that contains a domain index or any objects created by a domain index.
You cannot drop an undo tablespace if it is being used by any instance or if it contains any undo data needed to roll back uncommitted transactions.
You cannot drop a tablespace that has been designated as the default tablespace for the database. You must first reassign another tablespace as the default tablespace and then drop the old default tablespace.
You cannot drop a temporary tablespace if it is part of the database default temporary tablespace group. You must first remove the tablespace from the database default temporary tablespace group and then drop it.
You cannot drop a temporary tablespace if it contains segments that are in use by existing sessions. In this case, no error is raised. The database waits until there are no segments in use by existing sessions and then drops the tablespace.
You cannot drop a tablespace, even with the INCLUDING CONTENTS and CASCADE CONSTRAINTS clauses, if doing so would disable a primary key or unique constraint in another tablespace. For example, if the tablespace being dropped contains a primary key index, but the primary key column itself is in a different tablespace, then you cannot drop the tablespace until you have manually disabled the primary key constraint in the other tablespace.
Specify DROP QUOTA to drop all user quotas for the tablespace. Specify KEEP QUOTA to retain all user quotas for the tablespace. The default is KEEP QUOTA .
You can view all user quotas for a tablespace by querying the DBA_TS_QUOTAS data dictionary view.
Specify INCLUDING CONTENTS to drop all the contents of the tablespace. You must specify this clause to drop a tablespace that contains any database objects. If you omit this clause, and the tablespace is not empty, then the database returns an error and does not drop the tablespace.
DROP TABLESPACE fails, even if you specify INCLUDING CONTENTS , if the tablespace contains some, but not all, of the partitions or subpartitions of a single table. If all the partitions or subpartitions of a partitioned table reside in tablespace , then DROP TABLESPACE . INCLUDING CONTENTS drops tablespace , as well as any associated index segments, LOB data and index segments, and nested table data and index segments of table in other tablespace(s).
For a partitioned index-organized table, if all the primary key index segments are in this tablespace, then this clause will also drop any overflow segments that exist in other tablespaces, as well as any associated mapping table in other tablespaces. If some of the primary key index segments are not in this tablespace, then the statement will fail. In that case, before you can drop the tablespace, you must use ALTER TABLE . MOVE PARTITION to move those primary key index segments into this tablespace, drop the partitions whose overflow data segments are not in this tablespace, and drop the partitioned index-organized table.
If the tablespace contains a master table of a materialized view, then the database invalidates the materialized view.
If the tablespace contains a materialized view log, then the database drops the log and any other direct-path INSERT refresh information associated with the table.
When you specify INCLUDING CONTENTS , the AND DATAFILES clause lets you instruct the database to delete the associated operating system files as well. Oracle Database writes a message to the alert log for each operating system file deleted. This clause is not needed for Oracle Managed Files, because they are removed from the system even if you do not specify AND DATAFILES .
When you specify INCLUDING CONTENTS , the KEEP DATAFILES clause lets you instruct the database to leave untouched the associated operating system files, including Oracle Managed Files. You must specify this clause if you are using Oracle Managed Files and you do not want the associated operating system files removed by the INCLUDING CONTENTS clause.
Specify CASCADE CONSTRAINTS to drop all referential integrity constraints from tables outside tablespace that refer to primary and unique keys of tables inside tablespace . If you omit this clause and such referential integrity constraints exist, then Oracle Database returns an error and does not drop the tablespace.
Dropping a Tablespace: Example
The following statement drops the tbs_01 tablespace and drops all referential integrity constraints that refer to primary and unique keys inside tbs_01 :
Deleting Operating System Files: Example
The following example drops the tbs_02 tablespace and deletes all associated operating system data files:
Временное табличное пространство, в противоположность тому, что можно предположить из его наименования, существует в базе данных постоянно, как и все прочие табличные пространства, такие как System и Sysaux. Однако данные во временном табличном пространстве имеют временный характер и существуют только на протяжении существования сеанса пользователя. Oracle использует временные табличные пространства в качестве рабочих областей для выполнения таких задач, как операции сортировки при выполнении запросов пользователей, и операции сортировки при создании индексов. Oracle не позволяет пользователям создавать объекты во временном табличном пространстве.
По определению временное табличное пространство хранит данные только на протяжении существования сеанса пользователя, и его данные не могут быть разделены между всеми пользователями. Производительность временного табличного пространства исключительно важна, когда приложение использует запросы, требующие интенсивной сортировки и хеширования, что подразумевает хранение промежуточных данных во временном табличном пространстве.
На заметку! СУБД Oracle Database пишет все данные программы в локальной области (PGA) порциями по 64 Кбайт, поэтому советуют создавать табличные пространства с размерами экстентов, кратными 64 Кбайт. Для крупных хранилищ данных и баз данных, поддерживающих системы принятия решений, которые интенсивно используют временные табличные пространства, рекомендуется размер экстента в 1 Мбайт.
Самый первый оператор после запуска экземпляра базы Oracle, который использует временное табличное пространство, создает сегмент сортировки, разделяемый всеми операциями сортировки в экземпляре. Когда вы останавливаете базу данных, она освобождает этот сегмент. Вы можете запросить представление V$SORT_SEGMENT, чтобы просмотреть выделение и освобождение места для этого сегмента сортировки. Увидеть, кто в данный момент использует сегмент сортировки, можно, опросив представление V$SORT_USAGE.Используйте представления V$TEMPFILE и DBA_TEMP_FILES, чтобы ознакомиться с подробностями о временных файлах, выделенных в данный момент временному табличному пространству.
Как упоминалось ранее, вы должны использовать конструкцию TEMPFILE при указании файлов, входящих в любое временное табличное пространство. С вашей точки зрения нет разницы между конструкцией DATAFILE, которая указывается для постоянного табличного пространства, и конструкцией TEMPFILE, специфицируемой для временного табличного пространства. Однако Oracle различает эти два типа файлов. Временные файлы содержат мало или вообще не содержат данных повторного выполнения, ассоциированных с ними.
Создание временного табличного пространства
Вы создаете временное табличное пространство точно так же, как и постоянное,лишь с тем отличием, что указываете конструкцию TEMPORARY в операторе CREATE TABLESPACE и подставляете эту конструкцию TEMPFILE вместо DATAFILE. Вот пример:
Конструкция SIZE во второй строке указывает размер файла данных и, как следствие, размер временного табличного пространства — 500 Мбайт. В приведенном операторе конструкция AUTOEXTEND ON приведет к автоматическому увеличению размера временного файла и вместе с ним — размера временного табличного пространства. По умолчанию все временные табличные пространства создаются с экстентами унифицированного размера — 1 Мбайт. Тем не менее, можно указать конструкцию UNIFORM SIZE,чтобы задать другой размер, как показано в следующем операторе:
В приведенном операторе конструкция EXTENT MANAGEMENT необязательна.Конструкция UNIFORM SIZE специфицирует специальный размер экстента в 16 Мбайт вместо 1 Мбайт по умолчанию.
Совет. При выделении места временному табличному пространству применяйте конструкцию TEMPFILE вместо DATAFILE.
Обычно принято создавать одно временное табличное пространство (именуемое, как правило, Temp) для каждой базы данных, но вполне можно иметь и несколько временных табличных пространств, входящих в группу временных табличных пространств,если база данных нуждается в выполнении интенсивных операций сортировки.Чтобы уничтожить данные во временном табличном пространстве по умолчанию,необходимо сначала воспользоваться командой ALTER TABLESPACE для создания нового табличного пространства по умолчанию в базе данных. Предыдущее временное табличное пространство по умолчанию затем можно уничтожить подобно любому другому.
На заметку! Oracle рекомендует устанавливать в качестве временного табличного пространства по умолчанию управляемое локально временное табличное пространство с унифицированным размером экстента в 1 Мбайт.
Изменение временного табличного пространства
С помощью команды ALTER TEMPORARY TABLESPACE можно выполнять различные задачи управления временным табличным пространством, включая добавление временного файла для его увеличения. Вот пример того, как можно увеличить временное табличное пространство:
Аналогичным образом можно использовать команду ALTER TABLESPACE для изменения размера временного файла:
Для уничтожения временного файла и удаления соответствующего файла операционной системы служит следующий оператор:
Когда вы уничтожаете временный файл, относящийся к временному табличному пространству, то само табличное пространство остается в использовании.
Временное табличное пространство можно сократить, как и любое нормальное табличное пространство. Следующий пример показывает применение команды ALTER TABLESPACE для сокращения временного табличного пространства:
Сокращение временных табличных пространств
Иногда может понадобиться увеличить временное табличное пространство, чтобы вместить данные очень крупного задания, которое интенсивно использует это временное табличное пространство. После завершения такого задания можно сократить это временное табличное пространство, используя конструкцию SHRINK SPACE в операторе ALTER TABLESPACE. Вот пример:
Конструкция SHRINK SPACE уменьшит временные файлы до минимального размера,который составляет около 1 Мбайт. С помощью конструкции KEEP можно задать минимальный размер для временных файлов, как показано ниже:
Oracle использует специальную логику при сжатии временных файлов во временном табличном пространстве. Предположим, что имеется временное табличное пространство, содержащее два временных файла по 1 Гбайт. Для сокращения табличного пространства до 1 Гбайт выдается следующая команда:
Если запросить представление V$TEMPFILE, можно будет увидеть следующее:
База данных сократит один из двух временных файлов вплоть до 1 Мбайт, а другой — только на 1 Мбайт, оставив в нем нетронутыми 999 Мбайт пространства. Если ваша цель — сократить определенный временный файл до заданного минимума, можете сделать это, указав имя временного файла, который нужно сократить:
Приведенный выше оператор ALTER TABLESPACE сокращает только указанный временный файл до размера, заданного в конструкции KEEP. Остальные временные файлы из табличного пространства TEMP остаются нетронутыми. Конструкция KEEP в приведенном выше операторе гарантирует, что временный файл, который был специфицирован, сохранит 500 Мбайт пространства. Следующий пример демонстрирует, как сократить отдельный временный файл, не указывая сохранившегося пространства:
Поскольку в предыдущем операторе конструкция KEEP указана не была, база данных сокращает указанный временный файл до минимально возможного размера, который составляет около 1 Мбайт.
Временное табличное пространство по умолчанию
Когда вы создаете пользователей базы данных, то должны назначить каждому временное табличное пространство по умолчанию, в котором они будут выполнять свои временные работы, подобные сортировке. Если не указать явно пользователю его временное табличное пространство, для этих целей применяется табличное пространство System, что может привести к высокой степени фрагментации этого табличного пространства, помимо его заполнения и торможения всей деятельности базы данных.Избежать таких нежелательных ситуаций можно, создав временное табличное пространство по умолчанию (default) для базы данных при ее создании с помощью конструкции DEFAULT TEMPORARY TABLESPACE. Oracle затем будет использовать это временное табличное пространство по умолчанию для всех пользователей, кому таковое не будет назначено явно. Создание временного табличного пространства по умолчанию будет продемонстрировано в моей новой статье, где пойдет речь о создании новой базы данных Oracle.
Обратите внимание, что если не создать табличное пространство по умолчанию при создании базы данных, сделать его можно и впоследствии. Нужно просто создать временное табличное пространство, как показано в предыдущем примере, и сделать его временным табличным пространством по умолчанию для всей базы данных, используя оператор вроде следующего:
Узнать имя текущего временного табличного пространства по умолчанию для базы данных можно, выполнив следующий запрос:
На заметку! Для временного табличного пространства использовать конструкцию AUTOALLOCATE нельзя. По умолчанию все временные табличные пространства создаются с локально управляемыми экстентами унифицированного размера. Размер экстента по умолчанию составляет 1 Мбайт, как и для всех других табличных пространств, но при желании можно задать другой размер экстента при создании временного табличного пространства.
Группы временных табличных пространств
Крупные транзакции иногда могут приводить к переполнению временного пространства. Задачи, связанные с объемными сортировками, особенно включающие таблицы с несколькими разделами, приводят к значительной нагрузке на временные табличные пространства, от чего может пострадать производительность. В Oracle Database 10g была введена концепция группы временных табличных пространств, которая позволяет использовать временные табличные пространства в разных сеансах.
Ниже перечислены некоторые из основных характеристик группы временных табличных пространств.
- Группа временных табличных пространств должна состоять минимум из одного табличного пространства. Ограничений на максимальное их количество не существует.
- Если вы удалите все члены группы временных табличных пространств, группа также будет автоматически удалена.
- Группа временных табличных пространств имеет то же самое пространство имен,что и временные табличные пространства, являющиеся частью группы.
- Имя временного табличного пространства не может совпадать с именем любой из групп табличных пространств.
- При назначении временного табличного пространства пользователю можно применять имя группы временных табличных пространств вместо имени конкретного табличного пространства. Имя группы можно также использовать, назначая временное табличное пространство по умолчанию для всей базы данных.
Преимущества групп временных табличных пространств
Использование группы временных табличных пространств вместо обычного одиночного временного табличного пространства обеспечивает следующие преимущества.
- Запросы SQL с гораздо меньшей вероятностью приведут к переполнению места,отведенного для сортировки, потому что теперь запрос может параллельно использовать несколько временных табличных пространств для сортировки.
- Можно специфицировать несколько временных табличных пространств по умолчанию на уровне базы данных.
- Параллельно работающие серверы в параллельных операциях будут эффективно использовать несколько временных табличных пространств.
- Один пользователь может параллельно использовать несколько временных табличных пространств в разных сеансах.
Создание группы временных табличных пространств
Когда вы назначаете первое временное табличное пространство в группу, то тем самым автоматически создаете группу. Чтобы создать группу табличных пространств, просто специфицируйте конструкцию TABLESPACE GROUP в операторе CREATE TABLESPACE,как показано ниже:
Приведенный оператор SQL создаст новое временное табличное пространство temp01 вместе с новой группой табличных пространств по имени tmpgrp1. Oracle создает новую группу табличных пространств, поскольку здесь при создании нового временного табличного пространства указана ключевая конструкция TABLESPACE GROUP.
Можно также создать группу временных табличных пространств, специфицируя ту же конструкцию TABLESPACE GROUP в команде ALTER TABLESPACE, как показано ниже:
Приведенный оператор заставит Oracle создать новую группу по имени tmpgrp1, поскольку ранее не существовало группы табличных пространств с таким именем.
Если вы специфицируете пару кавычек ('') вместо имени группы табличных пространств, вы тем самым неявно указываете Oracle не включать данное временное табличное пространство в группу. Вот пример:
Приведенный оператор создает временное табличное пространство по имени temp02,которое является обычным временным табличным пространством, не относящимся ни к одной группе временных табличных пространств.
Если полностью пустить конструкцию TABLESPACE GROUP, будет создано обычное временное табличное пространство, также не относящееся ни к одной из групп:
Добавление табличного пространства к группе временных табличных пространств
Как показано в предыдущем разделе, с помощью команды ALTER TABLESPACE можно добавить временное табличное пространство в группу. Можно также изменить группу, к которой относится данное табличное пространство, используя команду ALTER TABLESPACE. Например, можно указать, что табличное пространство temp02 принадлежит группе tmpgrp2, выполнив следующую команду:
При этом база данных создаст новую группу по имени tmpgrp2, если такой группы еще не существовало.
Установка группы в качестве табличного пространства по умолчанию для базы данных
Вы можете использовать группу временных табличных пространств в качестве временного табличного пространства базы данных по умолчанию. Если выполнить показанный ниже оператор, то все пользователи, не имеющие временного табличного пространства по умолчанию, смогут использовать любое табличное пространство из группы tmpgrp1 в качестве временного табличного пространства по умолчанию:
Приведенный оператор ALTER DATABASE назначает все табличные пространства из группы tmpgrp1 в качестве временных табличных пространств по умолчанию для всей базы данных.
Назначение групп временных табличных пространств при создании или изменении пользователей
Когда вы создаете новых пользователей, вы можете назначать им группы временных табличных пространств вместо одного временного табличного пространства. Вот пример:
Создав пользователя, можно также применить оператор ALTER USER, чтобы изменить группу табличных пространств, которую он будет использовать. Вот оператор SQL,который делает это:
Просмотр информации о группах табличных пространств
Для управления группами временных табличных пространств в базе данных можно использовать новое представление словаря данных DATA_TABLESPACE_GROUPS. Ниже показан пример простого запроса к этому представлению, который отображает имена всех групп табличных пространств:
Чтобы найти соответствие между табличными пространствами и группами, к которым они принадлежат, можно также воспользоваться представлением DBA_USERS. Вот пример:
Use the DROP TABLESPACE statement to remove a tablespace from the database.
When you drop a tablespace, Oracle Database does not place it in the recycle bin. Therefore, you cannot subsequently either purge or undrop the tablespace.
CREATE TABLESPACE and ALTER TABLESPACE for information on creating and modifying a tablespace
You must have the DROP TABLESPACE system privilege. You cannot drop a tablespace if it contains any rollback segments holding active transactions.
Specify the name of the tablespace to be dropped.
You can drop a tablespace regardless of whether it is online or offline. Oracle recommends that you take the tablespace offline before dropping it to ensure that no SQL statements in currently running transactions access any of the objects in the tablespace.
You cannot drop the SYSTEM tablespace. You can drop the SYSAUX tablespace only if you have the SYSDBA system privilege and you have started the database in MIGRATE mode.
You may want to alert any users who have been assigned the tablespace as either a default or temporary tablespace. After the tablespace has been dropped, these users cannot allocate space for objects or sort areas in the tablespace. You can reassign users new default and temporary tablespaces with the ALTER USER statement.
Any objects that were previously dropped from the tablespace and moved to the recycle bin are purged from the recycle bin. Oracle Database removes from the data dictionary all metadata about the tablespace and all datafiles and tempfiles in the tablespace. The database also automatically drops from the operating system any Oracle-managed datafiles and tempfiles in the tablespace. Other datafiles and tempfiles are not removed from the operating system unless you specify INCLUDING CONTENTS AND DATAFILES .
You cannot use this statement to drop a tablespace group. However, if tablespace is the only tablespace in a tablespace group, then Oracle Database removes the tablespace group from the data dictionary as well.
Restrictions on Dropping Tablespaces Dropping tablespaces is subject to the following restrictions:
You cannot drop a tablespace that contains a domain index or any objects created by a domain index.
You cannot drop an undo tablespace if it is being used by any instance or if it contains any undo data needed to roll back uncommitted transactions.
You cannot drop a tablespace that has been designated as the default tablespace for the database. You must first reassign another tablespace as the default tablespace and then drop the old default tablespace.
You cannot drop a temporary tablespace if it is part of the database default temporary tablespace group. You must first remove the tablespace from the database default temporary tablespace group and then drop it.
You cannot drop a tablespace, even with the INCLUDING CONTENTS and CASCADE CONSTRAINTS clauses, if doing so would disable a primary key or unique constraint in another tablespace. For example, if the tablespace being dropped contains a primary key index, but the primary key column itself is in a different tablespace, then you cannot drop the tablespace until you have manually disabled the primary key constraint in the other tablespace.
Specify INCLUDING CONTENTS to drop all the contents of the tablespace. You must specify this clause to drop a tablespace that contains any database objects. If you omit this clause, and the tablespace is not empty, then the database returns an error and does not drop the tablespace.
For partitioned tables, DROP TABLESPACE will fail even if you specify INCLUDING CONTENTS , if the tablespace contains some, but not all:
Partitions of a range- or hash-partitioned table, or
Subpartitions of a composite-partitioned table.
If all the partitions of a partitioned table reside in tablespace , then DROP TABLESPACE . INCLUDING CONTENTS will drop tablespace , as well as any associated index segments, LOB data segments, and LOB index segments in the other tablespace(s).
For a partitioned index-organized table, if all the primary key index segments are in this tablespace, then this clause will also drop any overflow segments that exist in other tablespaces, as well as any associated mapping table in other tablespaces. If some of the primary key index segments are not in this tablespace, then the statement will fail. In that case, before you can drop the tablespace, you must use ALTER TABLE . MOVE PARTITION to move those primary key index segments into this tablespace, drop the partitions whose overflow data segments are not in this tablespace, and drop the partitioned index-organized table.
If the tablespace contains a master table of a materialized view, then the database invalidates the materialized view.
If the tablespace contains a materialized view log, then the database drops the log and any other direct-path INSERT refresh information associated with the table.
When you specify INCLUDING CONTENTS , the AND DATAFILES clause lets you instruct the database to delete the associated operating system files as well. Oracle Database writes a message to the alert log for each operating system file deleted. This clause is not needed for Oracle-managed files, because they are removed from the system even if you do not specify AND DATAFILES .
When you specify INCLUDING CONTENTS , the KEEP DATAFILES clause lets you instruct the database to leave untouched the associated operating system files, including Oracle-managed files. You must specify this clause if you are using Oracle-managed files and you do not want the associated operating system files removed by the INCLUDING CONTENTS clause.
Specify CASCADE CONSTRAINTS to drop all referential integrity constraints from tables outside tablespace that refer to primary and unique keys of tables inside tablespace . If you omit this clause and such referential integrity constraints exist, then Oracle Database returns an error and does not drop the tablespace.
Dropping a Tablespace: Example The following statement drops the tbs_01 tablespace and drops all referential integrity constraints that refer to primary and unique keys inside tbs_01 :
Deleting Operating System Files: Example The following example drops the tbs_02 tablespace and deletes all associated operating system datafiles:
Use the DROP TABLESPACE statement to remove a tablespace from the database.
When you drop a tablespace, Oracle Database does not place it in the recycle bin. Therefore, you cannot subsequently either purge or undrop the tablespace.
CREATE TABLESPACE and ALTER TABLESPACE for information on creating and modifying a tablespace
You must have the DROP TABLESPACE system privilege. You cannot drop a tablespace if it contains any rollback segments holding active transactions.
Specify the name of the tablespace to be dropped, including those of shadow tablespaces, that store lost write protection updates.
You can drop a tablespace regardless of whether it is online or offline. Oracle recommends that you take the tablespace offline before dropping it to ensure that no SQL statements in currently running transactions access any of the objects in the tablespace.
You cannot drop the SYSTEM tablespace. You can drop the SYSAUX tablespace only if you have the SYSDBA system privilege and you have started the database in UPGRADE mode.
You may want to alert any users who have been assigned the tablespace as either a default or temporary tablespace. After the tablespace has been dropped, these users cannot allocate space for objects or sort areas in the tablespace. You can reassign users new default and temporary tablespaces with the ALTER USER statement.
Any objects that were previously dropped from the tablespace and moved to the recycle bin are purged from the recycle bin. Oracle Database removes from the data dictionary all metadata about the tablespace and all data files and temp files in the tablespace. The database also automatically drops from the operating system any Oracle-managed data files and temp files in the tablespace. Other data files and temp files are not removed from the operating system unless you specify INCLUDING CONTENTS AND DATAFILES .
You cannot use this statement to drop a tablespace group. However, if tablespace is the only tablespace in a tablespace group, then Oracle Database removes the tablespace group from the data dictionary as well.
Restrictions on Dropping Tablespaces
Dropping tablespaces is subject to the following restrictions:
You cannot drop a tablespace that contains a domain index or any objects created by a domain index.
You cannot drop an undo tablespace if it is being used by any instance or if it contains any undo data needed to roll back uncommitted transactions.
You cannot drop a tablespace that has been designated as the default tablespace for the database. You must first reassign another tablespace as the default tablespace and then drop the old default tablespace.
You cannot drop a temporary tablespace if it is part of the database default temporary tablespace group. You must first remove the tablespace from the database default temporary tablespace group and then drop it.
You cannot drop a temporary tablespace if it contains segments that are in use by existing sessions. In this case, no error is raised. The database waits until there are no segments in use by existing sessions and then drops the tablespace.
You cannot drop a tablespace, even with the INCLUDING CONTENTS and CASCADE CONSTRAINTS clauses, if doing so would disable a primary key or unique constraint in another tablespace. For example, if the tablespace being dropped contains a primary key index, but the primary key column itself is in a different tablespace, then you cannot drop the tablespace until you have manually disabled the primary key constraint in the other tablespace.
Specify DROP QUOTA to drop all user quotas for the tablespace. Specify KEEP QUOTA to retain all user quotas for the tablespace. The default is KEEP QUOTA .
You can view all user quotas for a tablespace by querying the DBA_TS_QUOTAS data dictionary view.
Specify INCLUDING CONTENTS to drop all the contents of the tablespace, including those of shadow tablespaces that store lost write protection updates. You must specify this clause to drop a tablespace that contains any database objects. If you omit this clause, and the tablespace is not empty, then the database returns an error and does not drop the tablespace.
DROP TABLESPACE fails, even if you specify INCLUDING CONTENTS , if the tablespace contains some, but not all, of the partitions or subpartitions of a single table. If all the partitions or subpartitions of a partitioned table reside in tablespace , then DROP TABLESPACE . INCLUDING CONTENTS drops tablespace , as well as any associated index segments, LOB data and index segments, and nested table data and index segments of table in other tablespace(s).
For a partitioned index-organized table, if all the primary key index segments are in this tablespace, then this clause will also drop any overflow segments that exist in other tablespaces, as well as any associated mapping table in other tablespaces. If some of the primary key index segments are not in this tablespace, then the statement will fail. In that case, before you can drop the tablespace, you must use ALTER TABLE . MOVE PARTITION to move those primary key index segments into this tablespace, drop the partitions whose overflow data segments are not in this tablespace, and drop the partitioned index-organized table.
If the tablespace contains a master table of a materialized view, then the database invalidates the materialized view.
If the tablespace contains a materialized view log, then the database drops the log and any other direct-path INSERT refresh information associated with the table.
When you specify INCLUDING CONTENTS , the AND DATAFILES clause lets you instruct the database to delete the associated operating system files as well. Oracle Database writes a message to the alert log for each operating system file deleted. This clause is not needed for Oracle Managed Files, because they are removed from the system even if you do not specify AND DATAFILES .
When you specify INCLUDING CONTENTS , the KEEP DATAFILES clause lets you instruct the database to leave untouched the associated operating system files, including Oracle Managed Files. You must specify this clause if you are using Oracle Managed Files and you do not want the associated operating system files removed by the INCLUDING CONTENTS clause.
Specify CASCADE CONSTRAINTS to drop all referential integrity constraints from tables outside tablespace that refer to primary and unique keys of tables inside tablespace . If you omit this clause and such referential integrity constraints exist, then Oracle Database returns an error and does not drop the tablespace.
Dropping a Tablespace: Example
The following statement drops the tbs_01 tablespace and drops all referential integrity constraints that refer to primary and unique keys inside tbs_01 :
Dropping a Shadow Tablespace: Example
The following statement tries to move the tracked data in the shadow tablespace to another shadow tablespace. This only works if there are shadow tablespaces in the PDB with enough free space.
The following statement drops the shadow tablespace and all its contents. All the tracking data is lost.
Dropping Shadow Tablespace Including Contents: Example
Deleting Operating System Files: Example
The following example drops the tbs_02 tablespace and deletes all associated operating system data files:
Читайте также: