oracle按时间分区以及自动分区
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle按时间分区以及自动分区相关的知识,希望对你有一定的参考价值。
(1)
--- 创建按时间分区的表
create table temp_workdate(
WORKDATE date
)
PARTITION BY RANGE (WORKDATE)(
partition P_20171020 values less than (TO_DATE(‘ 2017-10-20 23:59:59‘, ‘SYYYY-MM-DD HH24:MI:SS‘, ‘NLS_CALENDAR=GREGORIAN‘))
);
-- 插入时间比分区时间小的数据不会报错
insert into temp_workdate select to_date(TO_DATE(‘ 2017-09-11 23:59:59‘, ‘SYYYY-MM-DD HH24:MI:SS‘)) from dual;
--插入时间比分区时间大的数据报错
insert into temp_workdate select to_date(TO_DATE(‘ 2017-12-11 23:59:59‘, ‘SYYYY-MM-DD HH24:MI:SS‘)) from dual;
1.因为我这边使用存储过程,所以可以用代码控制数据导向以及分区生成;
2.表名自己控制生成规则,后期获取简单(至少我这边是)
(2)
-- 由数据库自动分区
create table temp_workdate(
WORKDATE date
)
PARTITION BY RANGE (WORKDATE)
INTERVAL (NUMTODSINTERVAL(1,‘DAY‘))(
partition P_20171020 values less than (TO_DATE(‘ 2017-10-20 23:59:59‘, ‘SYYYY-MM-DD HH24:MI:SS‘, ‘NLS_CALENDAR=GREGORIAN‘))
);
-- 插入两条数据
insert into temp_workdate select to_date(TO_DATE(‘ 2017-12-11 23:59:59‘, ‘SYYYY-MM-DD HH24:MI:SS‘)) from dual;
insert into temp_workdate select to_date(TO_DATE(‘ 2017-09-11 23:59:59‘, ‘SYYYY-MM-DD HH24:MI:SS‘)) from dual;
-- success
-- 自动分区,但分区名不好控制且不是自己定义.后期要取需要循环去拿
以上是关于oracle按时间分区以及自动分区的主要内容,如果未能解决你的问题,请参考以下文章