删除未知的约束

 

SQL> select segment_name,owner,segment_type from dba_segments where tablespace_name='XIAO';

SEGMENT_NA OWNER                          SEGMENT_TYPE
---------- ------------------------------ ------------------
DB                 XXX                            TABLE
DB_P            XXX                            INDEX
DB_U1          XXX                            INDEX
DBINC           XXX                            TABLE
DBINC_P      XXX                            INDEX
DBINC_U1    XXX                            INDEX
TS                   XXX                            TABLE
TS_P             XXX                            INDEX
TS_U1          XXX                            INDEX
TS_U2          XXX                            INDEX
BS                 XXX                            TABLE
BS_P            XXX                            INDEX
BS_U2         XXX                            INDEX

已选择13行。


SQL> DROP TABLE XXX.DB;
DROP TABLE XXX.DB
               *
第 1 行出现错误:
ORA-02449: 表中的唯一/主键被外键引用

 

在不知道表中约束的情况下,使用如下方法删除这些对象

 1.删除外键对象 2.删除主键 3.删除约束

select 'alter table '||owner||'.'||table_name||' drop constraint '||constraint_name||';'
from dba_constraints
where owner='XXX' and constraint_type='R';

'ALTERTABLE'||OWNER||'.'||TABLE_NAME||'DROPCONSTRAINT'||CONSTRAINT_NAME||';'
-----------------------------------------------------------------------------------------
alter table XXX.DBINC drop constraint DBINC_F1;
alter table XXX.DB drop constraint DB_F1;
alter table XXX.TS drop constraint TS_F1;
alter table XXX.BS drop constraint BS_F1;

select 'alter table '||owner||'.'||table_name||' drop constraint '||constraint_name||';'
from dba_constraints
where owner='XXX' and constraint_type='P';

'ALTERTABLE'||OWNER||'.'||TABLE_NAME||'DROPCONSTRAINT'||CONSTRAINT_NAME||';'
------------------------------------------------------------------------------
alter table XXX.DB drop constraint DB_P;
alter table XXX.DBINC drop constraint DBINC_P;
alter table XXX.TS drop constraint TS_P;
alter table XXX.BS drop constraint BS_P;

 select 'alter table '||owner||'.'||table_name||' drop constraint '||constraint_name||';'
 from dba_constraints
 where owner='XXX';

'ALTERTABLE'||OWNER||'.'||TABLE_NAME||'DROPCONSTRAINT'||CONSTRAINT_NAME||';'
----------------------------------------------------------------------------------------------------
alter table XXX.BS drop constraint BS_C_CONTROLFILE_INCLUDED;
alter table XXX.BS drop constraint BS_C_INCR_LEVEL;
alter table XXX.BS drop constraint BS_C_BCK_TYPE;
alter table XXX.BS drop constraint SYS_C004821;
alter table XXX.BS drop constraint SYS_C004820;
alter table XXX.BS drop constraint SYS_C004819;

.................................

SQL> SELECT SEGMENT_NAME,SEGMENT_TYPE FROM DBA_SEGMENTS WHERE OWNER='XXX';

SEGMENT_NAME                                                                      SEGMENT_TYPE
--------------------------------------------------------------------------------- ------------------
DB                                                                                TABLE
DBINC                                                                             TABLE
TS                                                                                TABLE
BS                                                                                TABLE

SELECT 'DROP '||SEGMENT_TYPE||' '||OWNER||'.'||SEGMENT_NAME||' PURGE;' FROM DBA_SEGMENTS WHERE OWNER='XXX'

'DROP'||SEGMENT_TYPE||''||OWNER||'.'||SEGMENT_NAME||';'
---------------------------------------------------------
DROP TABLE XXX.DB PURGE;
DROP TABLE XXX.DBINC PURGE;
DROP TABLE XXX.TS PURGE;
DROP TABLE XXX.BS PURGE;

SELECT SEGMENT_NAME FROM DBA_SEGMENTS WHERE OWNER='XXX';

未选定行

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值