如何通过范围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开始或停止创建新分区,如果插入表中的新数据不符合任何现有分区中的分区键。查看包,这有助于您更改表