这篇文章给大家分享的是有关数据库中如何将按月分区的表改为按天分区的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一般来说,按月分区的表都是range分区,下面来介绍将按月分区改为按天分区的方法:
1.range间隔分区的情况
间隔分区无法手工add partition ,会出现如下报错:
ORA-14760 ADD PARTITION is not permitted on Interval partitioned objects
思路是先改为非间隔(Interval)分区 ,然后手工按天add partition ,并建议再改成按天间隔,详见如下案列:
create table tmp_test_range
(
id number,
name varchar2(30),
int_date date
)
PARTITION BY RANGE(int_date)
interval(NUMTOYMINTERVAL (1,'MONTH'))
(
partition P201511 values less than(to_date('20151201','yyyymmdd')),
partition P201512 values less than(to_date('20160101','yyyymmdd')));
ALTER TABLE tmp_test_range SET INTERVAL ();
alter table tmp_test_range add partition P20160101 values less than(to_date('20160102','yyyymmdd'));
ALTER TABLE tmp_test_range SET INTERVAL (NUMTODSINTERVAL(1,'DAY'));
2.range非间隔分区的情况
思路是删除一些还没有使用的月分区,然后手工按天add partition ,并建议再改成按天间隔
create table tmp_test_range
(
id number,
name varchar2(30),
int_date date
)
PARTITION BY RANGE(int_date)
(
partition P201511 values less than(to_date('20151201','yyyymmdd')),
partition P201512 values less than(to_date('20160101','yyyymmdd')),
partition P201601 values less than(to_date('20160201','yyyymmdd')));
alter table tmp_test_range drop partition P201601;
alter table tmp_test_range add partition P20160101 values less than(to_date('20160102','yyyymmdd')); --新增一个起始分区
ALTER TABLE tmp_test_range SET INTERVAL (NUMTODSINTERVAL(1,'DAY'));
感谢各位的阅读!关于“数据库中如何将按月分区的表改为按天分区”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!