學習筆記】分割槽表和分割槽索引——新增表分割槽(二)
一、增加表分割槽(add partition)
增加表分割槽適用於所有的分割槽形式,語法是:alter table tbname add partition ...
但是,對於像 list、range 這種存在範圍值的分割槽,所要增加的分割槽值必須大於當前分割槽中的最大值(如果當前存在
maxvalue 或 default 分割槽,add partition 會報錯,這種情況之能適用 split)。示例如下:
(1)增加 range 分割槽表的分割槽
SQL> create table t_partition_range (id number,name varchar2(50))
2 partition by range (id)(
3 partition t_range_p1 values less than (10) tablespace test1,
4 partition t_range_p2 values less than (20) tablespace test2
5 );
Table created
--增加一個分割槽值小於分割槽表中已有分割槽的最大列值
SQL> alter table t_partition_range add partition t_range_p3 values less than (15) tablespace test3;
alter table t_partition_range add partition t_range_p3 values less than (15) tablespace test3
ORA-14074: 分割槽界限必須調整為高於最後一個分割槽界限
--增加一個比分割槽表中最大列值大的分割槽
SQL> alter table t_partition_range add partition t_range_p3 values less than (maxvalue) tablespace test3;
Table altered
--增加一個列值比分割槽表中已有分割槽列值小的分割槽
SQL> alter table t_partition_range add partition t_range_p4 values less than (30) tablespace test4;
alter table t_partition_range add partition t_range_p4 values less than (30) tablespace test4
ORA-14074: 分割槽界限必須調整為高於最後一個分割槽界限
可見:對於 range 分割槽而言,不能新增小於最大範圍值的分割槽。
(2)增加 list 分割槽表的分割槽
SQL> create table t_partition_list (id number,name varchar2(50))
2 partition by list (id) (
3 partition t_list_p1 values (1,2,3) tablespace test1,
4 partition t_list_p2 values (10,11,12) tablespace test2
5 );
Table created
--新增list分割槽表的分割槽
SQL> alter table t_partition_list add partition t_list_p3 values (5,6,7) tablespace test3;
Table altered
--新增list分割槽表的default分割槽
SQL> alter table t_partition_list
2 add partition t_list_p4 values (default) tablespace test4;
Table altered
--新增list分割槽表中小於default列值的分割槽
SQL> alter table t_partition_list add partition t_list_p5 values (8,9,10);
alter table t_partition_list add partition t_list_p5 values (8,9,10)
ORA-14323: 在 DEFAULT 分割槽已存在時無法新增分割槽
由上可以看出 range、list 兩種分割槽表的區別:range 分割槽表不允許新增列值比已存在列值小的分割槽列,但是 list 分割槽表
允許。
(3)新增 hash 分割槽:
因為 hash 分割槽表的列值沒有固定值,所以它的新增分割槽沒有任何限制。
綜上:
(1)對於hash分割槽,當執行 add partition 操作時,oracle 會自動選擇分配一個分割槽,並重新分配部分記錄到新建的
分割槽,也意味著可能帶來一些 IO 操作。
(2)執行 alter table 時未指定 update indexes 子句:
如果是 range/list 分割槽,其 local 索引和 global 索引不會受影響;
如果是 hash 分割槽,新加分割槽即有資料移動的分割槽的 local 索引和 global 索引會被置為 unuseable ,需要重編譯。
(3)複合分割槽完全適用上述所述規則。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24496749/viewspace-1037995/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【學習筆記】分割槽表和分割槽索引——管理索引分割槽(四)筆記索引
- 【學習筆記】分割槽表和分割槽索引——分割槽表的其他管理(三)筆記索引
- 【學習筆記】分割槽表和分割槽索引——概念部分(一)筆記索引
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- 全面學習分割槽表及分割槽索引(9)--刪除表分割槽索引
- 全面學習分割槽表及分割槽索引(11)--合併表分割槽索引
- 全面學習分割槽表及分割槽索引(12)--修改list表分割槽索引
- 全面學習分割槽表及分割槽索引(10)--交換分割槽索引
- 全面學習分割槽表及分割槽索引(8)--增加和收縮表分割槽索引
- 全面學習分割槽表及分割槽索引(16)--增加和刪除索引分割槽索引
- 全面學習分割槽表及分割槽索引(15)--修改表分割槽屬性和模板索引
- 深入學習Oracle分割槽表及分割槽索引Oracle索引
- 全面學習分割槽表及分割槽索引(1)索引
- 深入學習分割槽表及分割槽索引(1)索引
- 全面學習分割槽表及分割槽索引(17)--其它索引分割槽管理操作索引
- 【三思筆記】 全面學習Oracle分割槽表及分割槽索引筆記Oracle索引
- Oracle分割槽表及分割槽索引Oracle索引
- 分割槽表學習筆記筆記
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- rebuild分割槽表分割槽索引的方法Rebuild索引
- 分割槽表及分割槽索引建立示例索引
- oracle分割槽表和分割槽表exchangeOracle
- 全面學習分割槽表及分割槽索引(6)--建立range-list組合分割槽索引
- 分割槽索引學習筆記索引筆記
- 分割槽表、分割槽索引和全域性索引部分總結索引
- 全面學習分割槽表及分割槽索引(7)--怎樣管理索引
- 分割槽表分割槽索引查詢效率探究索引
- oracle分割槽表和非分割槽表exchangeOracle
- 深入學習分割槽表及分割槽索引(5)--建立range-hash組合分割槽(續)索引
- oracle分割槽表學習(二)Oracle
- 分割槽表學習之二
- Oracle分割槽表全域性索引新增分割槽時不會失效Oracle索引
- 全面學習分割槽表及分割槽索引(7)--怎樣管理(續)索引
- 全面認識oracle分割槽表及分割槽索引Oracle索引
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- 關於分割槽表和分割槽索引(About Partitioned Tables and Indexes)索引Index
- mysql分割槽表筆記MySql筆記