創(chuàng)建list分區(qū)的語法如上,需要我們指定的: l column: 分區(qū)依賴列(注意:只能是一個(gè)); l partition:分區(qū)名稱; l literal: 分區(qū)對應(yīng)值(注意:每個(gè)分區(qū)可以對應(yīng)多個(gè)值); l tablespace_clause: 分區(qū)的存儲(chǔ)屬性,例如所在表空間等屬性(可為空),默認(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ū)有效, 哪個(gè)操作適用于哪種分區(qū)格式具體可以先參考下面這個(gè)表格:
-----------------------
分區(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ū):支持 |
單純刪除操作無,但可能為了實(shí)現(xiàn)成功刪除,之前的準(zhǔn)備操作會(huì)帶來一定量的IO |
修改子分區(qū)模板(setsubpartitiontemplate) |
/ |
/ |
/ |
支持 |
支持 |
無 |
移動(dòng)分區(qū)(movepartition) |
支持 |
支持 |
支持 |
分區(qū):支持子分區(qū):/ |
分區(qū):支持子分區(qū):/ |
有 |
重命名分區(qū)(renamepartition) |
支持 |
支持 |
支持 |
支持 |
支持 |
無 |
分隔分區(qū)(splitpartition) |
支持 |
支持 |
/ |
分區(qū):支持子分區(qū):/ |
支持 |
有 |
截?cái)喾謪^(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ù)會(huì)在oracle操作表分區(qū)的時(shí)候自動(dòng)進(jìn)行,需要注意的是global索引,當(dāng)global索引所在表執(zhí)行alter table涉及下列操作時(shí),會(huì)導(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即會(huì)自動(dòng)維護(hù)全局索引,當(dāng)然,需要注意這中間有一個(gè)平衡,你要平衡操作ddl的時(shí)間和重建索引哪個(gè)時(shí)間更少,以決定是否需要附加update indexes子句。
|