oracle创建range分区表,Oracle分区表详解,分区表创建,分区表按日期划分

前言(絮叨絮叨)

最近接手一个项目,要求与Oracle数据库做对接,分区表还是要做的,可是网上根本涉及内容很少,没办法,用一下午才弄明白,截至发稿,饭都没吃呢。。。。。。。。

分区表概念:

正常增删改查都行,SQL语句正常写,但是查询可以通过分区表进行区分查询,可以限定范围什么的,特别方便,而且快,不絮叨,直接说主题。

分区表创建

先说下,里面有两个地方需要注意,一个是分区字段名,这里用的是:WORKDATE,需要有个分区字段;

另外一个是划分分区时间的 less than(XXXX),这个时间是比较特殊,超过这个时间会自动创建额外的分区,但暂时这么理解吧,我一般管它叫默认时间,也可以创建多个,但是我都只创建一个,后续会自增。

月的,年的建议设置时间为每个月的01月1日。

创建日分区表

create table TTT(WORKDATE date)

PARTITION BY RANGE (WORKDATE) INTERVAL (NUMTODSINTERVAL(1,'day'))

( partition P_1995 values less than (TO_DATE('1995-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')));

创建月分区表

create table TTT(WORKDATE date)

PARTITION BY RANGE (WORKDATE) INTERVAL (NUMTOYMINTERVAL(1,'month'))

( partition P_1995 values less than (TO_DATE('1995-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')));

创建年分区表

create table TTT(WORKDATE date)

PARTITION BY RANGE (WORKDATE) INTERVAL (NUMTOYMINTERVAL(1,'year'))

( partition P_1995 values less than (TO_DATE('1995-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')));

报错信息解决:

报错:

ORA-14752: 间隔表达式不是正确类型的常数

解决:你写错了,日和周的是 NUMTODSINTERVAL,年的和月的 是 NUMTOYMINTERVAL

oracle创建range分区表,Oracle分区表详解,分区表创建,分区表按日期划分_第1张图片

报错

ORA-14767: 无法使用现有上限指定此间隔

解决:你时间写的不对,时间不可以超过指定时间

月不超过 28号

年不能超过31号

oracle创建range分区表,Oracle分区表详解,分区表创建,分区表按日期划分_第2张图片

问题:

**为什么我创建的都是第二天的分区表?

需求:我想建分区表时候,插一条数据是创建当前时间的分区

对于日频度的来说:

默认日期建议是,是 TO_DATE(‘1995-01-01 00:00:00’, ‘SYYYY-MM-DD HH24:MI:SS’),在这个时间里就会创建当天的分区,超过会创建下一天的分区。

( partition P_1995 values less than (TO_DATE('1995-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')));

对于月频度的来说:

1号最好

( partition P_1995 values less than (TO_DATE('1995-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')));

对于年频度的来说

1号最好

( partition P_1995 values less than (TO_DATE('1995-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')));

如果给你提供到了帮助,评论下,点个关注,给个赞。

你可能感兴趣的:(oracle创建range分区表,Oracle分区表详解,分区表创建,分区表按日期划分)