全面學習分割槽表及分割槽索引(8)--增加和收縮表分割槽
1、增加表分割槽(add partition)
增加表分割槽適應於所有的分割槽形式,其語法是alter table tbname add partition .....
但是,需要注意對於像list,range這種存在範圍值的分割槽,所要增加的分割槽值必須要大於當前分割槽中的最大值(如果當前存在maxvalue或default的分割槽,add partition會報錯,這種情況只能使用split,後面會講到),hash分割槽則無此限制。
例如:
JSSWEB> create table t_partition_range (id number,name varchar2(50))
2 partition by range(id)(
3 partition t_range_p1 values less than (10) tablespace tbspart01,
4 partition t_range_p2 values less than (20) tablespace tbspart02,
5 partition t_range_p3 values less than (30) tablespace tbspart03
6 );
表已建立。
JSSWEB> alter table t_partition_range
2 add partition t_range_p4 values less than(40);
表已更改。
Hash和list的語法與上類似,這裡不再舉例。
注意:
1、對於hash分割槽,當你執行add partition操作的時候,oracle會自動選擇一個分割槽,並重新分配部分記錄到新建的分割槽,這也意味著有可能帶來一些IO操作。
2、執行alter table時未指定update indexes子句:
如果是range/list分割槽,其local索引和global索引不會受影響;
如果是hash分割槽,新加分割槽及有資料移動的分割槽的local索引和glocal索引會被置為unuseable,需要重新編譯。
3、複合分割槽完全適用上述所述規則。
2、收縮表分割槽(coalesce partitions)
Coalesce partition是個很有意思的分割槽功能,僅能被應用於hash分割槽或複合分割槽的hash子分割槽,執行之後,會自動收縮當前的表分割槽,比如某表當前有5個hash分割槽,執行alter table tbname coalesce partitions後就變成4個,再執行一次就變成3個,再執行一次就變2個,再執行一次就...........就報錯了:),對於已分割槽的表至少要有一個分割槽存在的嘛!
例如:
JSSWEB> select table_name,partition_name from user_tab_partitions
2 where table_name='T_PARTITION_HASH';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
T_PARTITION_HASH T_HASH_P2
T_PARTITION_HASH T_HASH_P3
T_PARTITION_HASH T_HASH_P4
T_PARTITION_HASH T_HASH_P5
T_PARTITION_HASH T_HASH_P1
JSSWEB> alter table t_partition_hash coalesce partition;
表已更改。
JSSWEB> select table_name,partition_name from user_tab_partitions
2 where table_name='T_PARTITION_HASH';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
T_PARTITION_HASH T_HASH_P2
T_PARTITION_HASH T_HASH_P3
T_PARTITION_HASH T_HASH_P4
T_PARTITION_HASH T_HASH_P1
注意,收縮的只是分割槽,並不會影響到資料,但是視被收縮分割槽中資料的多少,收縮表分割槽也會涉及到IO操作。
另外如果你在執行該語句時沒有指定update indexes子句,收縮過程中有資料改動的分割槽其local索引和glocal索引都會失效,需要重新編譯。
檢視前面的連載:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-269276/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 全面學習分割槽表及分割槽索引(16)--增加和刪除索引分割槽索引
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- 全面學習分割槽表及分割槽索引(10)--交換分割槽索引
- 全面學習分割槽表及分割槽索引(9)--刪除表分割槽索引
- 全面學習分割槽表及分割槽索引(11)--合併表分割槽索引
- 全面學習分割槽表及分割槽索引(12)--修改list表分割槽索引
- 全面學習分割槽表及分割槽索引(1)索引
- 全面學習分割槽表及分割槽索引(15)--修改表分割槽屬性和模板索引
- 全面學習分割槽表及分割槽索引(17)--其它索引分割槽管理操作索引
- 學習筆記】分割槽表和分割槽索引——新增表分割槽(二)筆記索引
- 全面學習分割槽表及分割槽索引(7)--怎樣管理索引
- 深入學習Oracle分割槽表及分割槽索引Oracle索引
- 深入學習分割槽表及分割槽索引(1)索引
- 【學習筆記】分割槽表和分割槽索引——管理索引分割槽(四)筆記索引
- 全面認識oracle分割槽表及分割槽索引Oracle索引
- 全面學習分割槽表及分割槽索引(6)--建立range-list組合分割槽索引
- Oracle分割槽表及分割槽索引Oracle索引
- 全面學習分割槽表及分割槽索引(7)--怎樣管理(續)索引
- 【學習筆記】分割槽表和分割槽索引——分割槽表的其他管理(三)筆記索引
- 分割槽表及分割槽索引建立示例索引
- 【三思筆記】 全面學習Oracle分割槽表及分割槽索引筆記Oracle索引
- 全面學習分割槽表及分割槽索引(14)--截斷、移動和重新命名索引
- 【學習筆記】分割槽表和分割槽索引——概念部分(一)筆記索引
- 深入學習分割槽表及分割槽索引(5)--建立range-hash組合分割槽(續)索引
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- rebuild分割槽表分割槽索引的方法Rebuild索引
- oracle分割槽表和分割槽表exchangeOracle
- 如何查詢分割槽表的分割槽及子分割槽
- 分割槽表、分割槽索引和全域性索引部分總結索引
- 分割槽表分割槽索引查詢效率探究索引
- oracle分割槽表和非分割槽表exchangeOracle
- 【實驗】【PARTITION】RANGE分割槽表增加分割槽
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- 關於分割槽表和分割槽索引(About Partitioned Tables and Indexes)索引Index
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- INTERVAL分割槽表鎖分割槽操作