最近项目上碰到个问题,在初始化某张表时,按照设计要求是按年做间隔分区。但是竟然忘记加上间隔的参数
INTERVAL(NUMTOYMINTERVAL(1,'year'))
,造成没有按年创建分区。按年自动创建分区的语句如下:
CREAT TABLE tt
(
ID NUMBER(8),
dd DATE
)
PARTITION BY RANGE(dd)
INTERVAL(NUMTOYMINTERVAL(1,'year'))
(
PARTITION P1 VALUES LESS THAN(TO_DATE('2016-01-01','YYYY-MM-DD'))
);
当问题发现后,表中已经有几百万条数据,必须要想办法把间隔分区的参数调整。使用如下语法:
ALTER TABLE tt SET INTERVAL (numtoyminterval(1,'year'));
表修改成功,然后插入2017年的数据,自动创建分区成功。
select TABLE_NAME,PARTITION_NAME,TABLESPACE_NAME from user_tab_partitions where table_name='tt';