如何更改 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 开始或停止创建新分区任何现有分区中的分区键。