創(chuàng)建list分區(qū)的語法如上,需要我們指定的:
l column: 分區(qū)依賴列(注意:只能是一個);
l partition:分區(qū)名稱;
l literal: 分區(qū)對應(yīng)值(注意:每個分區(qū)可以對應(yīng)多個值);
l tablespace_clause: 分區(qū)的存儲屬性,例如所在表空間等屬性(可為空),默認(rèn)繼承基表所在表空間的屬性。
*************************************
創(chuàng)建list分區(qū)表示例:
JSSWEB> create table t_partition_list (id number,name varchar2(50))
partition by list(id)(
partition t_list_p1 values (1,2,3,4,5,6,7,8,9) tablespace tbspart01,
partition t_list_p2 values (10,11,12,13,14,15,16,17,18,19) tablespace tbspart02,
partition t_list_p3 values (20,21,22,23,24,25,26,27,28,29) tablespace tbspart03,
partition t_list_pd values (default) tablespace tbspart04);
表已創(chuàng)建。
上例能夠?qū)崿F(xiàn)與前面range分區(qū)示例相同的效果,當(dāng)然針對本示例而言,list分區(qū)顯然不好用啊~~~
***********************************
對于分區(qū)表的操作很多,其中某些操作僅針對某些分區(qū)有效,
哪個操作適用于哪種分區(qū)格式具體可以先參考下面這個表格:
-----------------------
分區(qū)表 Range List Hash Range-Hash Range-List 是否帶來IO操作
增加分區(qū)(addpartition) 支持 支持 支持 支持 支持 除hash類型外,均不變帶來大量IO
收縮分區(qū)(coalescepartitions) / / 支持 分區(qū):/子分區(qū):支持 / 是
刪除分區(qū)(droppartition) 支持 支持 / 分區(qū):支持子分區(qū):/ 支持 無
交換分區(qū)(exchangepartition) 支持 支持 支持 支持 支持 無
合并分區(qū)(mergepartition) 支持 支持 / 分區(qū):支持子分區(qū):/ 支持 是
修改默認(rèn)屬性(modifydefaultattributes) 支持 支持 支持 支持 支持 無
修改分區(qū)當(dāng)前屬性(modifypartition) 支持 支持 支持 支持 支持 無
List分區(qū)增加值(modifypartitionaddvalues) / 支持 / / 分區(qū):/子分區(qū):支持 無
List分區(qū)刪除值(modifypartitiondropvalues) / 支持 / / 分區(qū):/子分區(qū):支持 單純刪除操作無,但可能為了實現(xiàn)成功刪除,之前的準(zhǔn)備操作會帶來一定量的IO
修改子分區(qū)模板(setsubpartitiontemplate) / / / 支持 支持 無
移動分區(qū)(movepartition) 支持 支持 支持 分區(qū):支持子分區(qū):/ 分區(qū):支持子分區(qū):/ 有
重命名分區(qū)(renamepartition) 支持 支持 支持 支持 支持 無
分隔分區(qū)(splitpartition) 支持 支持 / 分區(qū):支持子分區(qū):/ 支持 有
截斷分區(qū)(truncatepartition) 支持 支持 支持 支持 支持 無
注:上述IO列的評估建立在假設(shè)分區(qū)中均存在一定量數(shù)據(jù),并忽略修改數(shù)據(jù)字典可能觸發(fā)的IO,忽略造成的索引的重編譯帶來的IO。
分區(qū)索引的操作也有一張表黑黑,如下
分區(qū)索引 索引類型 Range List Hash 組合分區(qū) 是否帶來IO操作
增加分區(qū)
(addpartition)
全局 / / 支持 / 是
本地 / / / /
刪除分區(qū)
(droppartition)
全局 支持 / / / 無
本地 / / / /
修改默認(rèn)屬性
(modifydefaultattributes)
全局 支持 / / / 無
本地 支持 支持 支持 支持 無
修改分區(qū)當(dāng)前屬性
(modifypartition)
全局 支持 / / / 無
本地 支持 支持 支持 支持 無
重編譯分區(qū)
(rebuildpartition)
全局 支持 / / / 有
本地 支持 支持 支持 支持 有
重命名分區(qū)
(renamepartition)
全局 支持 / / / 無
本地 支持 支持 支持 支持 無
分隔分區(qū)
(splitpartition)
全局 支持 / / / 有
本地 / / / /
另外local索引前頭我們多次提到了,其維護(hù)會在oracle操作表分區(qū)的時候自動進(jìn)行,需要注意的是global索引,當(dāng)global索引所在表執(zhí)行alter table涉及下列操作時,會導(dǎo)至該索引失效:
Ø ADD PARTITION | SUBPARTITION
Ø COALESCE PARTITION | SUBPARTITION
Ø DROP PARTITION | SUBPARTITION
Ø EXCHANGE PARTITION | SUBPARTITION
Ø MERGE PARTITION | SUBPARTITION
Ø MOVE PARTITION | SUBPARTITION
Ø SPLIT PARTITION | SUBPARTITION
Ø TRUNCATE PARTITION | SUBPARTITION
因此,建議用戶在執(zhí)行上述操作sql語句后附加update indexes子句,oracle即會自動維護(hù)全局索引,當(dāng)然,需要注意這中間有一個平衡,你要平衡操作ddl的時間和重建索引哪個時間更少,以決定是否需要附加update indexes子句。