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