最近项目上碰到个问题,在初始化某张表时,按照设计要求是按年做间隔分区。但是竟然忘记加上间隔的参数
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';

本文介绍了一种在Oracle数据库中调整已存在表的间隔分区的方法。通过ALTER TABLE语句成功地为一张包含大量数据的表添加了按年自动创建分区的功能。
560

被折叠的 条评论
为什么被折叠?



