分区表学习笔记(二)--分区管理(三)

2014-11-24 17:06:59 · 作者: · 浏览: 2
注意:分区移动会自动维护局部分区索引,oracle 不会自动维护全局索引,所以需要我们重新rebuild 分区索引,具体需要rebuild 哪些索引,可以通过dba_part_indexes,dba_ind_partitions去判断。
SQL> Select index_name,status From user_indexes Where table_name='CUSTADDR';
INDEX_NAME STATUS
------------------------------ --------
IX_CUSTADDR_ID N/A
------------------------------------------------------------------- ----------------------
这里有点小疑问:这个状态是否是正常的,实验中状态如下:
SQL> select index_owner,index_name,partition_name,STATUS from dba_ind_partitions where
2 index_name='IX_CUSTADDR_ID';
INDEX_OWNER INDEX_NAME PARTITION_NAME STATUS
------------------------------ ------------------------------ ------------------------------ --------
SYS IX_CUSTADDR_ID P_OTHER UNUSABLE --可能是做了其他操作
SYS IX_CUSTADDR_ID T_LIST551 USABLE 删除分区,重新添加之后
SYS IX_CUSTADDR_ID T_LIST556 USABLE 状态正常。
SQL> Select index_name,status From user_indexes Where table_name='CUSTADDR';
INDEX_NAME STATUS
------------------------------ --------
IX_CUSTADDR_ID N/A
------------------------------------------------------------------- -----------------------
5、Truncate分区
SQL> select * from custaddr partition(T_LIST556);
ID AREA
--------------- ----
1 556
SQL> alter table custaddr truncate partition(T_LIST556);
表被截断。
SQL> select * from custaddr partition(T_LIST556);
未选定行
说明:
Truncate相对delete操作很快,数据仓库中的大量数据的批量数据加载可能会有用到;截断分区同样会自动维护局部分区索引,同时会使全局索引unusable,需要重建
6、Drop分区
SQL> alter table custaddr drop partition T_LIST551;
表已更改。
SQL> select table_name,partition_name from user_tab_partitions where
table_name='CUSTADDR';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
CUSTADDR T_LIST556
CUSTADDR P_OTHER
同样会自动维护局部分区索引,同时会使全局索引unusable,需要重建