这篇文章主要为大家展示了“oracle分区表全局唯一索引失效导致无法增删改怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“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 ind免费主机域名ex 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;
以上是“oracle分区表全局唯一索引失效导致无法增删改怎么办”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注云技术行业资讯频道!
这篇文章给大家分享的是有关m免费主机域名ys免费主机域名ql中如何查询一段时间的日期的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 mysql中查询一段时间的日期,要把没数据的日期也展示出来的方法如下:感谢各位的阅读!关于“mysq…