全面学习分区表及分区索引(16)--增加和删除索引分区

从本节开始,介绍索引分区的管理操作~~

1、增加索引分区(Adding Index Partitions)

从语法上来讲,增加索引分区与增加表分区没有什么实际性差别,将table换成index即可:

Alter index idxname add partition ptname tbs_clause;

需要注意一点add partition只能用于hash的global索引(如果你想为range类型的索引增加分区,不要用add,split也许能帮你实际你的需求),并且add partition无法新增local索引分区,因为local分区是由索引所在基表来维护的。

下面举个操作的例子,还记的我们前面演示创建hash分区的时候创建的索引吗,这里就以它为例吧:

JSSWEB> select partition_name,tablespace_name from user_ind_partitions

  2  where index_name='IDX_PART_HASH_ID';

PARTITION_NAME                 TABLESPACE_NAME

------------------------------ ------------------------------

SYS_P113                       TBSPART01

SYS_P114                       TBSPART02

SYS_P115                       TBSPART03

JSSWEB> alter index idx_part_hash_id add partition i_hash_id_p4 tablespace tbspart04;

索引已更改。

JSSWEB> select partition_name,tablespace_name from user_ind_partitions

  2  where index_name='IDX_PART_HASH_ID';

PARTITION_NAME                 TABLESPACE_NAME

------------------------------ ------------------------------

I_HASH_ID_P4                   TBSPART04

SYS_P113                       TBSPART01

SYS_P114                       TBSPART02

SYS_P115                       TBSPART03

看看,就是这么简单。

2、删除索引分区(Dropping Index Partitions)

Drop partition只能操作global索引的range分区,语法也很简单:

Alter index idxname drop partition ptname;

看起来很简单对吧,但是,需要注意,索引必须拥有一个maxvalue的分区,该分区无法删除。

另外,如果删除的索引分区中包含数据,分区被删除后,会造成相邻的higher分区失效,需要手工编译!这个其实很容易理解,索引中数据都是经过排序的,我们drop partition删除的只是分区,但其对应的索引数据还需要有地儿存在行啊(不然索引启不就不准确了),于是就只好存储到比它更高区间值的索引区分里去了,那个分区莫名其妙多了数据,自然状态就为不可用了。

举个例子:

JSSWEB> select partition_name,high_value,tablespace_name,status from user_ind_partitions

  2  where index_name='IDX_PART_RANGE_ID';

PARTITION_NAME       HIGH_VALUE      TABLESPACE_NAME      STATUS

-------------------- --------------- -------------------- --------

I_RANGE_P1           10              TBSPART01            USABLE

I_RANGE_P2           40              TBSPART02            USABLE

I_RANGE_PMAX         MAXVALUE        TBSPART03            USABLE

向表中插入几条记录:

JSSWEB> insert into t_partition_range values (8,'a');

已创建 1 行。

JSSWEB> insert into t_partition_range values (9,'b');

已创建 1 行。

JSSWEB> commit;

提交完成。

执行删除操作

JSSWEB> alter index idx_part_range_id drop partition i_range_p1;

索引已更改。

JSSWEB> select partition_name,high_value,tablespace_name,status from user_ind_partitions

  2  where index_name='IDX_PART_RANGE_ID';

PARTITION_NAME       HIGH_VALUE      TABLESPACE_NAME      STATUS

-------------------- --------------- -------------------- --------

I_RANGE_P2           40              TBSPART02            UNUSABLE

I_RANGE_PMAX         MAXVALUE        TBSPART03            USABLE

于是,i_range_p2分区就unusable了,继续往下看吧,后面要讲如何重编译索引分区了。

查看前面的连载:

(15)--修改表分区属性和模板

(14)--截断、移动和重命名

(13)--分隔表分区

(12)--修改list表分区

(11)--合并表分区

(10)--交换表分区

(9)--删除表分区

(8)--增加和收缩表分区

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

转载于:http://blog.itpub.net/7607759/viewspace-324448/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值