oracle分区表全局唯一索引失效导致无法增删改

###建分区表
CREATE TABLE T_NEW (ID number, TIME date) PARTITION BY RANGE (TIME) 
(PARTITION P1 VALUES LESS THAN (TO_DATE('2004-7-1', 'YYYY-MM-DD')), 
PARTITION P2 VALUES LESS THAN (TO_DATE('2005-1-1', 'YYYY-MM-DD')), 
PARTITION P3 VALUES LESS THAN (TO_DATE('2005-7-1', 'YYYY-MM-DD')), 
PARTITION P4 VALUES LESS THAN (MAXVALUE));

##插入数据
insert into T_NEW values (1,to_date('2003-7-1','yyyy-mm-dd'));
insert into T_NEW values (1,to_date('2004-10-1','yyyy-mm-dd'));
insert into T_NEW values (1,to_date('2005-6-1','yyyy-mm-dd'));
commit;

##查看数据
select * from T_NEW;
select * from T_NEW partition(p1);
select * from T_NEW partition(p2);
select * from T_NEW partition(p3);
select * from T_NEW partition(p4);

##建全局唯一索引
create unique index i on T_NEW(TIME);

##删除分区但不更新全局索引
alter table t_new drop partition p1;

##插入数据报错
insert into T_NEW values (1,to_date('2011-6-1','yyyy-mm-dd'));  #报错

##在线并行重建全局唯一索引
ALTER INDEX I REBUILD ONLINE PARALLEL 8;
alter index i noparallel;


##插入数据正常
insert into T_NEW values (1,to_date('2011-6-1','yyyy-mm-dd'));  #不报错
commit;

##创建全局非唯一索引
drop index i;
create  index i on T_NEW(TIME);

##删除分区但不更新全局索引
alter table t_new drop partition p2;

##插入数据不报错
insert into T_NEW values (1,to_date('2012-6-1','yyyy-mm-dd'));  #不报错
commit;

##创建全局唯一索引
drop index i;
create unique index i on T_NEW(TIME);

##删除分区并更新全局索引
alter table t_new drop partition p3 update global indexes;

##插入数据不报错
insert into T_NEW values (1,to_date('2013-6-1','yyyy-mm-dd')); #不报错
commit;


结论:
1、分区表上若有【全局】【唯一】索引,如果drop分区没有【update global indexes】 则会导致该索引失效,所有的增删改(可以改非索引键)均会报错。
2、并行建索引之后,需要关闭并行:alter index i noparallel;
3、创建索引或重建索引建议如下sql:ALTER INDEX I REBUILD ONLINE PARALLEL 8;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31441616/viewspace-2152300/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31441616/viewspace-2152300/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值