我有一个以范围分区的表,并且有一个间隔。然后我有一个具有此配置的分区:
PARTITION "SYS_P657531" VALUES LESS THAN (18100000000)
有一个alter命令可以更改该分区的值吗?
例如:将其更改为PARTITION "SYS_P657531" VALUES LESS THAN (17493458497)
我有Oracle 12c。
谢谢,
答案 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);
这两个陈述做同样的事情;第一种语法更灵活,因为它允许我们在一次操作中将分区拆分为两个以上的新分区。
如果您没有任何高于17493458497的值和/或不想存储,那么您可以在SPLIT操作后删除剩余分区p_18100000000
。或者,如果作为相关练习的一部分,您需要将余数分区的上限提高到18100000000以上,那么您将创建一个具有所需高值的新分区(假设它尚不存在)并合并这两个分区。
alter table your_table merge partitions p_18100000000, p_whatever
into p_19000000000;