Oracle 删除表空间错误 提示:ora-02429:无法删除用于强制唯一/主键的索引

来源:互联网 发布:下载伴奏的软件 编辑:程序博客网 时间:2024/05/21 09:44

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

表空间已经丢弃。

 

方法有点简单粗暴,但是能用就行。。。

0 0
原创粉丝点击