我们可以更改分区的间隔吗?
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);
这两个语句做同样的事情;第一种语法更灵活,因为它允许我们在一次操作中将一个分区拆分为两个以上的新分区。
如果您没有任何大于 17493458497 的值 and/or 不想存储,那么您可以在 SPLIT 操作后删除剩余分区 p_18100000000
。或者,如果作为相关练习的一部分,您需要将剩余分区的上限提高到 18100000000 以上,那么您将创建一个具有所需高值的新分区(假设它尚不存在)并合并这两个分区。
alter table your_table merge partitions p_18100000000, p_whatever
into p_19000000000;
我有一个 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);
这两个语句做同样的事情;第一种语法更灵活,因为它允许我们在一次操作中将一个分区拆分为两个以上的新分区。
如果您没有任何大于 17493458497 的值 and/or 不想存储,那么您可以在 SPLIT 操作后删除剩余分区 p_18100000000
。或者,如果作为相关练习的一部分,您需要将剩余分区的上限提高到 18100000000 以上,那么您将创建一个具有所需高值的新分区(假设它尚不存在)并合并这两个分区。
alter table your_table merge partitions p_18100000000, p_whatever
into p_19000000000;