sql>droptablespace xxx
ora-01549:表空间非空,请使用INCLUDING CONTENTS 选项
sql>droptablespace xxx INCLUDING CONTENTS and datafiles;
ora-00604:递归sql层1出现错误。
ora-02429:无法删除用于强制唯一/主键的索引。
sql>droptablespace xxx including contents cascade constraints
ora-00604:递归sql层1出现错误。
ora-02429:无法删除用于强制唯一/主键的索引。
sql>selectsegment_name,partition_name,tablespace_name from dba_extents where tablespace_name=upper('XXX')
显示出2个表的主键的表空间是:XXX.
sql>select'alter table '||owner||'.'||table_name||' drop constraint '||constraint_name||';'
fromdba_constraints
whereconstraint_type in ('U', 'P')
and (index_owner, index_name) in
(select owner, segment_name
from dba_segments
where tablespace_name = 'XXX');
执行显示的结果,显示表更改。
然后
sql>droptablespace XXX
表空间已经丢弃。
以上方法转自http://blog.csdn.net/fuqinyijiu/article/details/40537719
当查询出的结构只有一两条的时候适用,但是我在删除表空间的时候遇到,查出的语句有37条。。。而且有的语句执行后也报错:
ora-02429:无法删除用于强制唯一/主键的索引。
没办法更改。
解决办法是,直接删除表空间的用户。。。
sql>dropuser XX cascade
然后再删除表空间
sql>droptablespace XXX including contents and datafiles
表空间已经丢弃。
方法有点简单粗暴,但是能用就行。。。