数据库中如何将按月分区的表改为按天分区

这篇文章给大家分享的是有关数据库中如何将按月分区的表改为按天分区的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

为辽宁等地区用户提供了全套网页设计制作服务,及辽宁网站建设行业解决方案。主营业务为网站制作、做网站、辽宁网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

一般来说,按月分区的表都是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')); 

感谢各位的阅读!关于“数据库中如何将按月分区的表改为按天分区”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


文章名称:数据库中如何将按月分区的表改为按天分区
文章URL:http://scyanting.com/article/gpdsip.html