我们可以更改分区的间隔吗?

时间:2018-04-25 05:37:55

标签: oracle ddl database-partitioning

我有一个以范围分区的表,并且有一个间隔。然后我有一个具有此配置的分区:

PARTITION "SYS_P657531"  VALUES LESS THAN (18100000000)

有一个alter命令可以更改该分区的值吗?

例如:将其更改为PARTITION "SYS_P657531" VALUES LESS THAN (17493458497)

我有Oracle 12c。

谢谢,

1 个答案:

答案 0 :(得分:3)

  

[有]一个alter命令,以便更改该分区的值吗?

不是这样的。考虑当前位置的值应该发生在17493458497和180999999之间的问题。数据库不能删除它们,但是改变分区的高值会使它们无家可归。

  

分区不满..所以没有你说的那样的值

这不会改变这种情况。 Oracle不支持减少(或提高)分区的高值。

我们可以做的是将现有分区拆分为两个:

alter table your_table split partition SYS_P657531 into
  (partition p_17493458497 values less than (17493458497),
   partition p_18100000000);

分割不同类型的分区有多种选择。例如,对于范围分区列表,我们可能会这样做:

alter table your_table split partition SYS_P657531
    at (17493458497) into
      (partition p_17493458497,
        partition p_18100000000);

这两个陈述做同样的事情;第一种语法更灵活,因为它允许我们在一次操作中将分区拆分为两个以上的新分区。

Find out more

如果您没有任何高于17493458497的值和/或不想存储,那么您可以在SPLIT操作后删除剩余分区p_18100000000。或者,如果作为相关练习的一部分,您需要将余数分区的上限提高到18100000000以上,那么您将创建一个具有所需高值的新分区(假设它尚不存在)并合并这两个分区。

alter table your_table merge partitions p_18100000000, p_whatever 
    into p_19000000000;

Find out more