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

63次阅读
没有评论

共计 1338 个字符,预计需要花费 4 分钟才能阅读完成。

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

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

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

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计1338字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)