全面學習分割槽表及分割槽索引(11)--合併表分割槽

junsansi發表於2008-05-22

合併兩個分割槽成一個,適用於除hash之外的其它所有分割槽形式(hash分割槽有coalesce partition的嘛,前頭剛剛講過)。

語法很簡單:alter table tbname merge partitions/subpartitions pt1,pt2 into partition/subpartition pt3;

同樣也支援update indexes子句以避免單獨執行造成索引失效的問題。

需要注意一點,要合併的兩個分割槽必須是連續的,這點是由分割槽本身的特性所決定的,如例:

JSSWEB> alter table t_partition_range merge partitions t_range_p1,t_range_p2

  2  into partition t_range_pnew;

表已更改。

JSSWEB> select table_name,partition_name,high_value from user_tab_partitions

  2  where table_name='T_PARTITION_RANGE';

TABLE_NAME                     PARTITION_NAME                 HIGH_VALUE

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

T_PARTITION_RANGE              T_RANGE_P3                     30

T_PARTITION_RANGE              T_RANGE_PMAX                   MAXVALUE

T_PARTITION_RANGE              T_RANGE_PNEW                   20

JSSWEB> select *from t_partition_range partition(t_range_pnew);

        ID NAME

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

        11 a

        12 b

        13 c

         8 g

可見,合併分割槽操作不會造成資料丟失,另外如果你想為新分割槽指定屬性的話,在語句末尾處增加儲存屬性即可(如果不指定,則新分割槽預設繼續表的儲存屬性)。例如:

JSSWEB> select partition_name,high_value,tablespace_name from user_tab_partitions

  2  where table_name='T_PARTITION_LIST';

PARTITION_NAME    HIGH_VALUE                      TABLESPACE_NAME

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

T_LIST_P1            1, 2, 3, 4, 5, 6, 7, 8, 9, 10              TBSPART01

T_LIST_P2            11, 12, 13, 14, 15, 16, 17, 18, 19, 20     TBSPART02

T_LIST_P3            21, 22, 23, 24, 25, 26, 27, 28, 29, 30     TBSPART03

T_LIST_PD            default                            TBSPART04

JSSWEB> alter table t_partition_list merge partitions t_list_p2,t_list_p3

  2  into partition t_list_p2 tablespace tbspart02;

表已更改。

JSSWEB> select partition_name,high_value,tablespace_name from user_tab_partitions

  2  where table_name='T_PARTITION_LIST';

PARTITION_NAME   HIGH_VALUE                                TABLESPACE_NAME

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

T_LIST_P1            1, 2, 3, 4, 5, 6, 7, 8, 9, 10                      TBSPART01

T_LIST_P2            21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 11, 12, 13    TBSPART02

                     , 14, 15, 16, 17, 18, 19, 20

T_LIST_PD            default                                    TBSPART04

注意,merge分割槽操作與coalesce分割槽操作一樣,視被合併的分割槽資料量多少,都可能涉及到大量的IO操作。

其它合併組合分割槽的操作與上類似,如果要合併組合分割槽,注意關鍵字是merge subpartitions,這裡就不做演示了。

 

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

檢視前面的連載:

(10)--交換表分割槽

(9)--刪除表分割槽

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

(7)--怎樣管理

(6)--建立range-list組合分割槽

(5)--建立range-hash組合分割槽(1)

(4)--建立list分割槽

(3)--建立hash分割槽

(2)--建立range分割槽

(1)--前言

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

相關文章