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

Can we change the interval for a partition?

我有一个 table 按范围分区的间隔。然后我有一个这样配置的分区:

PARTITION "SYS_P657531"  VALUES LESS THAN (18100000000)

是否有更改命令来更改该分区的值?

例:改成PARTITION "SYS_P657531" VALUES LESS THAN (17493458497)

我有 Oracle 12c。

谢谢,

[is there] an alter command in order to change the value for that partition?

并非如此。考虑当前位置17493458497到1809999999之间的值应该怎么处理的问题。数据库不能删除它们,但改变分区的高值会使它们无家可归。

The partition isn't full ..so there are not such values as you said

这并没有改变这种情况。 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 的值 and/or 不想存储,那么您可以在 SPLIT 操作后删除剩余分区 p_18100000000。或者,如果作为相关练习的一部分,您需要将剩余分区的上限提高到 18100000000 以上,那么您将创建一个具有所需高值的新分区(假设它尚不存在)并合并这两个分区。

alter table your_table merge partitions p_18100000000, p_whatever 
    into p_19000000000;

Find out more