全面學習分割槽表及分割槽索引(15)--修改表分割槽屬性和模板

junsansi發表於2008-05-29

1、修改表分割槽預設屬性(Modify Default Attributes)

修改表或表中分割槽的儲存引數,對當前表和分割槽的儲存引數沒有影響,只有修改過之後,當你下次再新增分割槽時,在不手工顯式指定新分割槽引數的情況下,新分割槽預設使用你當前指定的儲存引數。

有兩種操作方式:

修改表屬性,適用於range,list,hash分割槽形式(注意hash分割槽只能修改預設表空間引數)。例如:

JSSWEB> alter table t_partition_list modify default attributes tablespace webtbs;

表已更改。

修改分割槽屬性,適用於組合分割槽,例如:

JSSWEB> alter table t_partition_rl modify default attributes for partition t_r_p2 tablespace webtbs;

表已更改。

2、修改分割槽當前屬性(Modify Partition)

與上不同,該命令修改的不是預設屬性,而是分割槽當前的儲存屬性,即修改即生效的那種,雖然號稱是修改當前分割槽屬性,但實際上也有限制,比如所在表空間它就改不了(如果你想改,可以用move partition,後面會講到)。

儲存屬性呢,三思一向沒有過多關注(也許是因為從未有過因此導致的慘痛教訓),此節跳過,留待有心人自行查詢文件:)

3、修改表子分割槽模板(Set Subpartition Template)

既然是修改子分割槽模板,自然是隻針對複合分割槽有效。修改分割槽模式不會改變當前的分割槽結構,只有當你再增加、合併分割槽並且未顯式指定子分割槽儲存引數時,才會繼承新分割槽模板中的引數。

該命令語法很簡單:alter table tbname set subpartition template ....;

下面舉個例子:

JSSWEB> select subpartition_name,tablespace_name from user_subpartition_templates

  2  where table_name='T_PARTITION_RH';

SUBPARTITION_NAME                  TABLESPACE_NAME

---------------------------------- ---------------

H1                                 TBSPART01

H2                                 TBSPART02

H3                                 TBSPART03

H4                                 TBSPART04

JSSWEB> alter table t_partition_rh

  2  set subpartition template(

  3  subpartition h1 tablespace tbspart01,

  4  subpartition h2 tablespace tbspart02,

  5  subpartition h3 tablespace tbspart03);

表已更改。

JSSWEB> select subpartition_name,tablespace_name from user_subpartition_templates

  2  where table_name='T_PARTITION_RH';

SUBPARTITION_NAME                  TABLESPACE_NAME

---------------------------------- ---------------

H1                                 TBSPART01

H2                                 TBSPART02

H3                                 TBSPART03

*這裡又學到一個資料字典:user_subpartition_templates,用來查詢表的分割槽模板資訊。

如果說,想清除某表的分割槽模板,那就更簡單了:

JSSWEB> select subpartition_name,tablespace_name from user_subpartition_templates 

  2  where table_name='T_PARTITION_RL';

SUBPARTITION_NAME                  TABLESPACE_NAME

---------------------------------- ---------------

L1                                 TBSPART01

L2                                 TBSPART02

L3                                 TBSPART03

L4                                 TBSPART04

JSSWEB> alter table t_partition_rl set subpartition template();

表已更改。

JSSWEB> select * from user_subpartition_templates where table_name='T_PARTITION_RL';

未選定行

=====================================

檢視前面的連載:

(14)--截斷、移動和重新命名

(13)--分隔表分割槽

(12)--修改list表分割槽

(11)--合併表分割槽

(10)--交換表分割槽

(9)--刪除表分割槽

(8)--增加和收縮表分割槽

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

相關文章