oracle 表分区
Posted ygkeke
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 表分区相关的知识,希望对你有一定的参考价值。
一、按年分区,一年一个分区
create table GRMC_AWST_ELE
(
iiiii VARCHAR2(100),
beijingtime1 DATE
)
partition by range (beijingtime1)
(
partition P2013 values less than(to_date(‘2014-01-01‘,‘yyyy-mm-dd‘)),
partition P2014 values less than(to_date(‘2015-01-01‘,‘yyyy-mm-dd‘)),
partition P2015 values less than(to_date(‘2016-01-01‘,‘yyyy-mm-dd‘)),
partition P2016 values less than(to_date(‘2017-01-01‘,‘yyyy-mm-dd‘)),
partition P2017 values less than(to_date(‘2018-01-01‘,‘yyyy-mm-dd‘)),
partition P2018 values less than(to_date(‘2019-01-01‘,‘yyyy-mm-dd‘)),
partition P2019 values less than(to_date(‘2020-01-01‘,‘yyyy-mm-dd‘)),
partition PALL values less than(maxvalue)
)
二、按月自动分区,2014-5-1为一个分区,以后每个月一个分区
create TABLE TABLE1
(
TABLE_ID NUMBER(8),
SUB_DATE DATE
)
PARTITION BY RANGE(SUB_DATE)
INTERVAL(NUMTOYMINTERVAL(1,‘MONTH‘))
(
PARTITION P1 VALUES LESS THAN(TO_DATE(‘2017-05-01‘,‘YYYY-MM-DD‘))
);
测试:
insert into TABLE1(TABLE_ID,SUB_DATE) values(1,sysdate)
insert into TABLE1(TABLE_ID,SUB_DATE) values(2,to_date(‘2017-01-01‘,‘yyyy-mm-dd‘));
insert into TABLE1(TABLE_ID,SUB_DATE) values(2,to_date(‘2017-07-01‘,‘yyyy-mm-dd‘));
SELECT * FROM dba_segments t WHERE t.segment_name =‘TABLE1‘;
查看分区表空间大小
SELECT * FROM dba_segments t WHERE t.segment_name =‘TABLE1‘;
备注:11g之前,维护分区需要手工。11g之后使用interval来实现自动扩展分区,简化了维护。
根据年: INTERVAL(NUMTOYMINTERVAL(1,‘YEAR‘))
根据月: INTERVAL(NUMTOYMINTERVAL(1,‘MONTH‘))
根据天: INTERVAL(NUMTODSINTERVAL(1,‘DAY‘))
以上是关于oracle 表分区的主要内容,如果未能解决你的问题,请参考以下文章