Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过范围Oracle更改分区中的范围值_Oracle_Oracle11g_Partitioning - Fatal编程技术网

如何通过范围Oracle更改分区中的范围值

如何通过范围Oracle更改分区中的范围值,oracle,oracle11g,partitioning,Oracle,Oracle11g,Partitioning,我在下一个脚本中有一个现有表: 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'))

我在下一个脚本中有一个现有表:

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'))
我知道正确的方法是创建表,但是表已经存在,并且存储了很多记录

在Oracle 11g中有没有实现这一点的方法?我试图更改表格,但由于00940而无法工作。00000-“无效的ALTER命令”

希望你能帮助我

PS:我一直在这两个链接中阅读Oracle的全部文档,但运气不好:

您可以使用以下命令将范围分区表更改为间隔分区表:

ALTER TABLE X SET INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'));
ALTER TABLE X SET INTERVAL();
您可以使用以下命令更改回范围分区表:

ALTER TABLE X SET INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'));
ALTER TABLE X SET INTERVAL();
如果分区总是均匀地创建(在相同的时间段内),那么间隔分区总是比范围分区更可取的选择

这些命令不是资源密集型的,因为您不操作段和数据,只要告诉Oracle开始或停止创建新分区,如果插入表中的新数据不符合任何现有分区中的分区键。

查看包,这有助于您更改表