Oracle增加表分區(add partition)是常用的Oracle分區常用的操作。下面就簡單的介紹下Oracle增加表分區的知識要點。
增加表分區適應於所有的分區形式,其語法是alter table tbname add partition .....
但是,需要注意對於像list,range這種存在范圍值的分區,所要增加的分區值必須要大於當前分區中的最大值(如果當前存在maxvalue或default的分區,add partition會報錯,這種情況只能使用split,後面會講到),hash分區則無此限制。
例如:
- JSSWEB> create table t_partition_range (id number,name varchar2(50))
- partition by range(id)(
- partition t_range_p1 values less than (10) tablespace tbspart01,
- partition t_range_p2 values less than (20) tablespace tbspart02,
- partition t_range_p3 values less than (30) tablespace tbspart03
- );
表已創建。
- JSSWEB> alter table t_partition_range
- 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、復合分區完全適用上述所述規則。