通过drop命令删除表空间时若提示:
ORA-02429: cannot drop index used for enforcement of unique/primary key
此时只需删除主键或唯一性约束的索引即可,方法如下:
1.先查看该表空间下所有索引列表
//此处假设表空间名为temp_tablespace
select I.INDEX_NAME, I.INDEX_TYPE, I.TABLESPACE_NAME, I.TABLE_OWNER
from DBA_INDEXES I where I.TABLESPACE_NAME = 'TEMP_TABLESPACE';
此时可看见一个或多个主键约束,假设索引名index_name为temp_index,拥有者owner为temp_owner,这时根据索引名称查询所在的表
select C.CONSTRAINT_NAME, C.CONSTRAINT_TYPE, C.TABLE_NAME, C.INDEX_NAME
from DBA_CONSTRAINTS C where index_name = 'TEMP_INDEX';
再假设查得的表名为temptable,删除该表上的约束信息即可。
alter table temp_owner.TEMPTABLE drop constraint TEMP_INDEX cascade;
最后再重新执行删除表空间命令:
drop tablespace tablespace_name
[ including contents [ and datafiles ] [ CASCADE CONSTRAINT ] ];
无选项 -- 当表空间为空才能删除;
including contents — 删除表空间及对象;
including contents and datafiles — 删除表空间、对象及数据文件;
including contents CASCADE CONSTRAINT — 删除关联;
including contents and datafiles cascade constraint -- 含前两项。