如何更改 PARTITIONS BY Range Oracle 中的 RANGE 值
How to change RANGE value in PARTITIONS BY Range Oracle
我在下一个脚本中有一个现有的 table:
create table sales6
(
sales_id number,
sales_dt date
)
partition by range (sales_dt)
(
partition p0701 values less than (to_date('2007-02-01','yyyy-mm-dd'))
);
我需要的是更改分区范围以添加这样的间隔:
interval (numtoyminterval(1,'MONTH'))
我知道正确的方法是创建 table,但是 table 已经存在并且存储了很多记录。
在 Oracle 11g 中有什么方法可以做到这一点吗?我尝试更改 table 但由于 00940 而无法正常工作。00000 - "invalid ALTER command"
希望你能帮助我。
PS:我一直在这两个链接中阅读 Oracle 的整个文档,但没有运气:
https://docs.oracle.com/cd/E17952_01/refman-5.5-en/alter-table-partition-operations.html
https://docs.oracle.com/cd/E17952_01/refman-5.1-en/partitioning-management-range-list.html
您可以使用以下命令将范围分区 table 更改为间隔分区 table:
ALTER TABLE X SET INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'));
您可以使用以下命令改回 table 范围分区:
ALTER TABLE X SET INTERVAL();
如果您的分区总是均匀创建(在相同的时间段),则间隔分区总是比范围分区更可取的选择。
这些命令不是资源密集型的,因为您不操作段和数据,如果插入 table 中的新数据不适合,您只需告诉 Oracle 开始或停止创建新分区任何现有分区中的分区键。
我在下一个脚本中有一个现有的 table:
create table sales6
(
sales_id number,
sales_dt date
)
partition by range (sales_dt)
(
partition p0701 values less than (to_date('2007-02-01','yyyy-mm-dd'))
);
我需要的是更改分区范围以添加这样的间隔:
interval (numtoyminterval(1,'MONTH'))
我知道正确的方法是创建 table,但是 table 已经存在并且存储了很多记录。
在 Oracle 11g 中有什么方法可以做到这一点吗?我尝试更改 table 但由于 00940 而无法正常工作。00000 - "invalid ALTER command"
希望你能帮助我。
PS:我一直在这两个链接中阅读 Oracle 的整个文档,但没有运气: https://docs.oracle.com/cd/E17952_01/refman-5.5-en/alter-table-partition-operations.html https://docs.oracle.com/cd/E17952_01/refman-5.1-en/partitioning-management-range-list.html
您可以使用以下命令将范围分区 table 更改为间隔分区 table:
ALTER TABLE X SET INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'));
您可以使用以下命令改回 table 范围分区:
ALTER TABLE X SET INTERVAL();
如果您的分区总是均匀创建(在相同的时间段),则间隔分区总是比范围分区更可取的选择。
这些命令不是资源密集型的,因为您不操作段和数据,如果插入 table 中的新数据不适合,您只需告诉 Oracle 开始或停止创建新分区任何现有分区中的分区键。