添加表分区 您所在的位置:网站首页 已经分区的表如何更改表空间 添加表分区

添加表分区

2024-03-20 17:32| 来源: 网络整理| 查看: 265

http://shuangoracle.itpub.net/post/42649/505018

 

 

一、增加表分区(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)复合分区完全适用上述所述规则。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有