【學習筆記】分割槽表和分割槽索引——分割槽表的其他管理(三)

shuangoracle發表於2010-09-07

2、收縮表分割槽(coalesce partitions)
收縮表分割槽僅適用於 hash 分割槽或複合分割槽的 hash 子分割槽,執行之後會自動收縮當前的表分割槽;但是對於分割槽表
如果只有一個分割槽,則執行收縮操作會報錯。
語法:alter table tbname coalesce partition;

注意:收縮的只是分割槽,並不影響資料;但是視被收縮分割槽中資料的多少,收縮表分割槽也會涉及到IO操作;
如果執行時沒有指定 update indexes 子句,收縮過程中有資料改動的分割槽其 local 和 global 索引都會失效。

3、刪除表分割槽(drop partition)
除 hash 分割槽和 hash 子分割槽外,其他的分割槽格式都支援刪除表分割槽操作。
語法:
刪除分割槽: alter table tbname drop partition partition_name;
刪除子分割槽:alter table tbname drop subpartition subpartition_name;

注意:刪除表分割槽會將資料一起刪除,所以速度非常迅速;如果執行時沒有指定 update indexes 子句,會導致global
索引失效;由於刪除分割槽時對應索引分割槽會被同時刪除,但其他分割槽 local 索引不受影響因此也不會失效。

4、交換表分割槽(exchange partitions)
交換表分割槽適用於所有分割槽格式,即可以將資料從分割槽表遷移至非分割槽表,也可以從非分割槽表遷移至分割槽表,或者從
hash 分割槽到 range 分割槽等。
語法:
alter table tbname1 exchange partition/subpartition ptname1 with table tbname2 [partition/subpartition ptname2];

5、合併表分割槽(merge partitions)
合併分割槽適用於除 hash 之外的其他所有分割槽形式(hash 分割槽有 coalesce partition)
注意要合併的兩個分割槽必須是連續的,這點是由分割槽本身的特性所決定的。合併後的分割槽儲存屬性可以繼承表的儲存屬性
也可以自定義。合併表分割槽不會丟失資料。另外 merge 分割槽操作視移動資料量,可能涉及到io操作。
語法:alter table tbname merge partitions/subpartitions pt1,pt2 into partition/subpartition pt3;

6、拆分表分割槽(split partition)
將一個分割槽拆分成兩個。
語法:
range:alter table tbname split partition ptname at (value) into (partition newpt1 tbs_clause,partition newpt2 tbs_clause);
list:alter table tbname split partition ptname values (v1,v2...vn) into (partition newpt1 tbs_clause,partition newpt2 tbs_clause);
舊分割槽中符合新定義值的記錄會儲存到指定的第一個分割槽中,其他的記錄儲存到第二個分割槽中。

7、修改 list 表分割槽-add values
僅適用於 list 分割槽或 list 子分割槽,用來增加指定分割槽的 value 值。
語法:alter table tbname modify partition/subpartition ptname add values (v1,v2,v3,...vn);

注意:要新增的新 value 值不能存在於當前任何分割槽中;增加新的列表值不影響原有記錄,對索引沒有影響。

8、修改 list 表分割槽-drop values
僅適用於 list 分割槽或 list 子分割槽。用來刪除指定分割槽的 value 值。
語法:alter table tbname modify partition/subpartition ptname drop values (v1,v2,v3,...vn);

注意:刪除 list 分割槽 value 列值的時候,必須確保當前分割槽存在指定的 value 值;要保證修改 list 表分割槽時該分割槽沒有值。

9、截斷分割槽(truncate partition)
如果該表有外來鍵約束,則只能用 delete ... cascade 或先將外來鍵 disable 然後再 truncate。在不指定 update indexes
情況下,truncate partition 也會使 global 或 local 索引失效。
語法:
alter table tbname truncate partition/subpartition [sub]partition_name;

10、移動表分割槽(move partition)
移動表分割槽,比如可以修改分割槽所在表空間等等。如果沒有指定 update indexes ,被移動分割槽所在 local 或 global 索引會失效。
語法:
alter table tbname move partition/subpartition ptname tablespace tablespace_name;

11、重新命名錶分割槽(rename partition)
語法:
alter table tbname rename partition/subpartition ptname to newptname;

12、修改表分割槽預設屬性(modify default attribute)
修改表或表中分割槽的儲存引數,對當前表或分割槽的儲存引數沒有影響,只有修改過後,再新增分割槽時不指定新分割槽的情況下,
新分割槽預設是修改後的預設儲存引數。
兩種方法:
修改表屬性:alter table tbname modify default attributes tablespace tablespacename;
修改分割槽屬性:alter table ptname modify default attributes for partition/subpartition ptname tablespace tablespacename;

13、修改表分割槽當前屬性(modify partition)
該命令修改的不是預設屬性,而是分割槽當前的屬性,修改即生效,但是不能修改所在表空間。

14、修改子分割槽模板(set subpartition template)
修改子分割槽模板不會改變當前分割槽結構,只有當再增加、合併分割槽且未顯示指定子分割槽儲存引數的時候才有效。
語法:
alter table tbname set subpartition template(...);

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24496749/viewspace-1038001/,如需轉載,請註明出處,否則將追究法律責任。

相關文章