每日一记:drop tablespace 报错: “ORA-02429: 无法删除用于强制唯一/主键的索引”

-- drop tablespace PLANDERUSER including contents and datafiles;
-- 报错: “ORA-02429: 无法删除用于强制唯一/主键的索引”

-- 1.查看该表空间下有哪些索引
SELECT I.INDEX_NAME, I.INDEX_TYPE, I.TABLESPACE_NAME, I.TABLE_OWNER
FROM DBA_INDEXES I
WHERE I.TABLESPACE_NAME = 'TBS1';
-- 发现有个索引'ID'是主键约束'P'

-- 2.查看索引ID对应的约束信息
SELECT C.CONSTRAINT_NAME, C.CONSTRAINT_TYPE, C.TABLE_NAME, C.INDEX_NAME
FROM DBA_CONSTRAINTS C  where index_name='ID';
-- 发现索引'ID'在表'T1'上

-- 3.查看索引对应的约束信息
SELECT * FROM DBA_OBJECTS T1 WHERE T1.OBJECT_NAME = 'T1';
-- 发现对应的约束是'ID'

-- 4.查看表所在的表空间
select t1.Table_Name, t1.OWNER, t1.Tablespace_Name From Dba_Tables t1 Where t1.Table_Name = 'T1';
-- 它在USERS表空间下,不是TBS1

-- 5.解决方法:删除表上的约束即可(根据第1、2步中的查询结果)
alter table 表所属用户[I.TABLE_OWNER].表名称[C.TABLE_NAME] drop constraint 约束名称[C.CONSTRAINT_NAME] cascade;
alter table owner.T1 drop constraint ID cascade;
-- 再次删除表空间就可以了。
发布了77 篇原创文章 · 获赞 88 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/u013012406/article/details/90763390