您必须具有DROP TABLESPACE系统权限。如果表空间包含任何保存活动事务的回滚段,则不能删除它。
--删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
--删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
无论表空间是在线还是离线,您都可以删除它。Oracle 建议您在删除表空间之前使其脱机,
以确保当前正在运行的事务中没有 SQL 语句访问表空间中的任何对象。
您不能删除SYSTEM表空间。SYSAUX仅当您具有SYSDBA系统权限并且已在MIGRATE模式下启动数据库时,您才能删除表空间。
您可能希望提醒任何已将表空间分配为默认表空间或临时表空间的用户。删除表空间后,这些用户无法为表空间中的对象或排序区域分配空间。您可以使用该语句为用户重新分配新的默认表空间和临时表空间ALTER USER。
之前从表空间中删除并移动到回收站的任何对象都将从回收站中清除。Oracle 数据库从数据字典中删除有关表空间的所有元数据以及表空间中的所有数据文件和临时文件。数据库还会自动从操作系统中删除表空间中任何 Oracle 管理的数据文件和临时文件。除非您指定,否则不会从操作系统中删除其他数据文件和临时文件INCLUDING CONTENTS AND DATAFILES。
您不能使用此语句删除表空间组。但是,如果tablespace是表空间组中的唯一表空间,那么 Oracle 数据库也会从数据字典中删除该表空间组。
删除表空间的限制 删除表空间受以下限制:
您不能删除包含域索引或由域索引创建的任何对象的表空间。
如果任何实例正在使用撤消表空间,或者如果它包含回滚未提交事务所需的任何撤消数据,则不能删除撤消表空间。
您不能删除已指定为数据库默认表空间的表空间。您必须首先将另一个表空间重新分配为默认表空间,然后删除旧的默认表空间。
如果临时表空间是数据库默认临时表空间组的一部分,则不能删除它。您必须首先从数据库默认临时表空间组中删除该表空间,然后再将其删除。
INCLUDING CONTENTS即使使用and子句,也不能删除表空间,CASCADE CONSTRAINTS如果这样做会禁用另一个表空间中的主键或唯一约束。例如,如果要删除的表空间包含主键索引,但主键列本身位于不同的表空间中,则在手动禁用另一个表空间中的主键约束之前,您无法删除该表空间。
包括内容
指定INCLUDING CONTENTS删除表空间的所有内容。您必须指定此子句以删除包含任何数据库对象的表空间。如果省略此子句,并且表空间不为空,则数据库将返回错误并且不会删除表空间。
对于分区表,DROP TABLESPACE即使您指定INCLUDING CONTENTS,如果表空间包含一些但不是全部,也会失败:
范围或哈希分区表的分区,或
复合分区表的子分区。
笔记:
如果分区表的所有分区都驻留在 中tablespace,则DROP TABLESPACE...INCLUDING CONTENTS将删除tablespace,以及其他表空间中的任何关联索引段、LOB 数据段和 LOB 索引段。
对于分区索引组织的表,如果所有的主键索引段都在这个表空间中,那么这个子句还将删除其他表空间中存在的任何溢出段,以及其他表空间中的任何关联映射表。如果某些主键索引段不在此表空间中,则该语句将失败。在这种情况下,在删除表空间之前,必须使用ALTER TABLE...MOVE PARTITION将那些主键索引段移动到此表空间中,删除溢出数据段不在此表空间中的分区,并删除分区索引组织表。
如果表空间包含物化视图的主表,则数据库使物化视图无效。
如果表空间包含物化视图日志,则数据库将删除该日志以及INSERT与该表关联的任何其他直接路径刷新信息。
和数据文件
当您指定INCLUDING CONTENTS时,该AND DATAFILES子句允许您指示数据库也删除关联的操作系统文件。对于每个删除的操作系统文件,Oracle 数据库都会向警报日志写入一条消息。Oracle 管理的文件不需要此子句,因为即使您未指定AND DATAFILES.
保留数据文件
当您指定INCLUDING CONTENTS时,该KEEP DATAFILES子句允许您指示数据库保持关联的操作系统文件(包括 Oracle 管理的文件)保持不变。如果您使用 Oracle 管理的文件并且您不希望该子句删除关联的操作系统文件,则必须指定此INCLUDING CONTENTS子句。
级联约束
指定CASCADE CONSTRAINTS从外部表中删除所有引用完整性约束,这些约束引用tablespace内部表的主键和唯一键tablespace。如果省略此子句并且存在此类参照完整性约束,则 Oracle 数据库将返回错误并且不会删除表空间。
例子
删除表空间:示例 以下语句删除tbs_01表空间并删除所有引用内部主键和唯一键的参照完整性约束tbs_01:
删除表空间 tbs_01
包括内容
级联约束;
删除操作系统文件:示例 以下示例删除tbs_02表空间并删除所有关联的操作系统数据文件:
删除表空间 tbs_02
包括内容和数据文件;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




