分区索引小结(二)

2014-11-24 07:52:57 ? 作者: ? 浏览: 4
lues less than (2000) tablespace p1,
partition p2 values less than (maxvalue) tablespace p2
)

ORA-14038: GLOBAL 分区索引必须加上前缀

SQL> create bitmap index i_id_global on test(id) global
2 partition by range(id)
3 ( partition p1 values less than (2000) tablespace p1,
4 partition p2 values less than (maxvalue) tablespace p2
5 );

create bitmap index i_id_global on test(id) global
partition by range(id)
( partition p1 values less than (2000) tablespace p1,
partition p2 values less than (maxvalue) tablespace p2
)

ORA-25113: GLOBAL 可能无法与位图索引一起使用

三:分区索引不能够将其作为整体重建,必须对每个分区重建

SQL> alter index i_id_global rebuild online nologging;

alter index i_id_global rebuild online nologging

ORA-14086: 不能将分区索引作为整体重建

这个时候可以查询dba_ind_partitions,或者user_ind_partitions,找到partition_name,然后对每个分区重建

SQL> select index_name,partition_name from user_ind_partitions where index_name='I_ID_GLOBAL';

INDEX_NAME PARTITION_NAME
------------------------------ ------------------------------
I_ID_GLOBAL P1
I_ID_GLOBAL P2

SQL> alter index i_id_global rebuild partition p1 online nologging;

Index altered

SQL> alter index i_id_global rebuild partition p2 online nologging;

Index altered

四、建立分区索引与普通索引的区别

1、建立普通的索引

create index no_part_idx on p_list(sale_date);

2、建立本地分区索引

create index local_part_idx on p_list(sale_date) local;

3、建立全局分区索引

create index glo_part_idx on p_list(sale_date) global partition by range(sale_date) (

PARTITION p1 VALUES less than ('20121111') TABLESPACE system,

PARTITION p2 VALUES less than ('20121112') TABLESPACE system,

PARTITION pmax VALUES less than (maxvalue) TABLESPACE system );

四、删除索引与索引失效:

对于分区索引的删除,local index 不能指定分区名称,需单独的删除分区索引。 local index 对应的分区会伴随着data分区的删除而一起被删除。globalpartition index 可以指定分区名称,删除某一分区。但是有一点要注意,如果该分区不为空,则会导致更高一级的索引分区被置为UNUSABLE 。

ALTER INDEX gidx_range_exampel_id drop partition part_01 此句将导致part_02 状态为UNUSABLE

本地分区索引的状态改变

--整个索引不可用

ALTER INDEX index_tmp_partition_list UNUSABLE;

--单个分区索引不可用

ALTER INDEX index_tmp_partition_list MODIFY PARTITION p_20110816 USABLE;

--分区不可用之后,需要重建索引

alter index index_tmp_partition_list rebuild partition p_20110816;

--查看分区索引的状态

select index_name,partition_name,tablespace_name,status

fromuser_ind_partitions wherelower(index_name)='index_tmp_partition_list'

参考自:http://blog.csdn.net/robinson1988/article/details/5276924

-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: