分割槽表的不同操作對索引的影響
首先建立分割槽表測試資料:
create table test_partition_iptvbill partition by range(starttime) (
partition p_01 values less than(date '2008-02-02') tablespace dvboss,
partition p_02 values less than(date '2008-02-03') tablespace dvboss,
partition p_03 values less than(date '2008-02-04') tablespace dvboss,
partition p_04 values less than(date '2008-02-05') tablespace dvboss,
partition p_05 values less than(date '2008-02-06') tablespace dvboss,
partition p_06 values less than(date '2008-02-07') tablespace dvboss,
partition p_07 values less than(date '2008-02-08') tablespace dvboss)
storage(initial 10m next 10m minextents 1 maxextents unlimited pctincrease 0)
nologging as
select * from ow_iptv_bill ib
where ib.starttime < date '2008-02-08'
and ib.starttime >= date '2008-02-01';
建立索引:
--starttime本地索引
create index idx_testpi_starttime on test_partition_iptvbill(starttime) tablespace indx nologging local;
--subscriberid全域性索引
create index idx_testpi_subscriberid on test_partition_iptvbill(subscriberid) tablespace indx nologging;
測試內容分以下幾個部分:
日常對於分割槽的維護需要明確分割槽的操作對於索引的影響
1、drop一個空分割槽,所謂空分割槽就是分割槽已經建立,但是尚未有對應資料的情況
--增加一個空分割槽
alter table test_partition_iptvbill add partition p_08 values less than(date '2008-02-09') tablespace dvboss;
--將該分割槽drop
alter table test_partition_iptvbill drop partition p_08;
--檢查對於索引的影響
select ind.index_name, ind.status from user_indexes ind where ind.table_name = upper('test_partition_iptvbill');
可以發現索引狀態處於usable,即可用狀態。
2、重建索引
只能重建全域性索引:
alter index IDX_TESTPI_SUBSCRIBERID rebuild;
本地索引不能整體重建:
SQL> alter index IDX_TESTPI_STARTTIME rebuild;
alter index IDX_TESTPI_STARTTIME rebuild
ORA-14086: 不可以將區索引作為整體重建
要重建,只能根據user/dba_ind_partitions裡面指定的分割槽名進行單個重建:
SQL> select index_name, partition_name from user_ind_partitions ip where ip.index_name = 'IDX_TESTPI_STARTTIME';
INDEX_NAME PARTITION_NAME
------------------------------ ------------------------------
IDX_TESTPI_STARTTIME P_01
IDX_TESTPI_STARTTIME P_02
IDX_TESTPI_STARTTIME P_03
IDX_TESTPI_STARTTIME P_04
IDX_TESTPI_STARTTIME P_05
IDX_TESTPI_STARTTIME P_06
6 rows selected
SQL> alter index IDX_TESTPI_STARTTIME rebuild partition P_01;
Index altered
--檢查索引狀態已經變為有效狀態:
SQL> select index_name, status from user_indexes ind where ind.index_name = 'IDX_TESTPI_SUBSCRIBERID';
INDEX_NAME STATUS
------------------------------ --------
IDX_TESTPI_SUBSCRIBERID VALID
3、drop/truncate非空分割槽將使全域性索引的狀態變成不可用狀態。這個已經在很早的Blog中提過不再做實驗。
對於本地索引只是將對應的索引分割槽刪除掉。不會影響整體索引狀態。
select * from user_part_indexes pi where pi.index_name = 'IDX_TESTPI_STARTTIME'
select * from user_ind_partitions ip where ip.index_name = 'IDX_TESTPI_STARTTIME'
select * from user_tab_partitions tp where tp.table_name = upper('test_partition_iptvbill')
select * from user_segments seg where seg.segment_name = upper('test_partition_iptvbill')
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-588968/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 操作分割槽表對global和local索引的影響索引
- oracle分割槽表的常規操作導致對索引的影響Oracle索引
- 在範圍分割槽表上分割槽維護操作對索引狀態的影響索引
- 在範圍分割槽表上分割槽維護操作對索引狀態的影響(1)索引
- oracle本地分割槽索引跨分割槽對成本的影響Oracle索引
- 在範圍分割槽表上分割槽維護操作對全域性及本地索引狀態的影響(2)索引
- 有關Oracle表分割槽進行(DML)維護後對索引的影響的分析Oracle索引
- shrink 操作對索引的影響索引
- Update操作對索引的影響索引
- 全面學習分割槽表及分割槽索引(17)--其它索引分割槽管理操作索引
- 分割槽表的分割槽資料刪除、truncate會對全域性和區域性索引產生什麼影響索引
- rebuild分割槽表分割槽索引的方法Rebuild索引
- oracle 針對普通表的索引分割槽及10g新增hash 索引分割槽Oracle索引
- Oracle分割槽表及分割槽索引Oracle索引
- 表資料的儲存對索引的影響索引
- 【學習筆記】分割槽表和分割槽索引——分割槽表的其他管理(三)筆記索引
- 分割槽表的常用操作
- WITH VALIDATION 與WITHOUT VALIDATION對分割槽交換的影響
- oracle點陣圖索引對DML操作的影響Oracle索引
- CONTEXT索引對COMMIT操作的影響 (ZT)Context索引MIT
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- 分割槽表及分割槽索引建立示例索引
- 【學習筆記】分割槽表和分割槽索引——管理索引分割槽(四)筆記索引
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- INTERVAL分割槽表鎖分割槽操作
- 【Oracle】-【COMMIT對索引的影響】-從trace看COMMIT對索引的影響OracleMIT索引
- 全面學習分割槽表及分割槽索引(9)--刪除表分割槽索引
- 全面學習分割槽表及分割槽索引(11)--合併表分割槽索引
- 全面學習分割槽表及分割槽索引(12)--修改list表分割槽索引
- 學習筆記】分割槽表和分割槽索引——新增表分割槽(二)筆記索引
- 分割槽表分割槽索引查詢效率探究索引
- 關於分割槽表的操作
- 分割槽表、分割槽索引和全域性索引部分總結索引
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- 全面學習分割槽表及分割槽索引(16)--增加和刪除索引分割槽索引
- 全面學習分割槽表及分割槽索引(10)--交換分割槽索引
- 範圍分割槽表和INTERVAL分割槽表對於SPLIT分割槽的區別
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引