文件命名说明:
数据文件 NEUSOFT_接入点.dbf
表空间 TS_接入点
主分区 P_接入点
子分区(查询用) P_接入点_SP_2018 (SP_2013分区对应<2014的数据,2015分区对应2015年的数据,SP_2031分区对应>=2030的数据)
1.背景说明
数据表存放不同医院(接入点),多年数据。表分区逻辑按照接入点为主分区,每年的数据作为子分区进行范围存放,2014年前和2030年后分别存放在两个分区中。
2.表空间建立,一个接入点一个表空间(以下创建2个表空间)。
CREATE TABLESPACE "TS_JCQZJ" DATAFILE '/orclgkdata/NEUSOFT_JCQZJ.dbf'
SIZE 256M AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
CREATE TABLESPACE "TS_JHJCQZJ" DATAFILE '/orclgkdata/NEUSOFT_JHJCQZJ.dbf'
SIZE 256M AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
3.创建分区表,如下:
create table bz01
(
COMMUNITYID VARCHAR2(500),
BATCHID VARCHAR2(500),
NEUUNITCODE VARCHAR2(500),
BUSINESSDATE VARCHAR2(500),
UPLOADTIME VARCHAR2(500) default to_char(SYSTIMESTAMP,'yyyyMMddHH24missFF3'),
PAR_CODE VARCHAR2(6) default 201806,
MZZYH VARCHAR2(200),
JYJGDW VARCHAR2(10),
TS VARCHAR2(500),
XSSX NUMBER(3)
)
partition by list (COMMUNITYID)
subpartition by range(BUSINESSDATE)
subpartition template (
subpartition SP_2013 values less than ('2014'),
subpartition SP_2014 values less than ('2015'),
subpartition SP_2015 values less than ('2016'),
subpartition SP_2016 values less than ('2017'),
subpartition SP_2017 values less than ('2018'),
subpartition SP_2018 values less than ('2019'),
subpartition SP_2019 values less than ('2020'),
subpartition SP_2020 values less than ('2021'),
subpartition SP_2021 values less than ('2022'),
subpartition SP_2022 values less than ('2023'),
subpartition SP_2023 values less than ('2024'),
subpartition SP_2024 values less than ('2025'),
subpartition SP_2025 values less than ('2026'),
subpartition SP_2026 values less than ('2027'),
subpartition SP_2027 values less than ('2028'),
subpartition SP_2028 values less than ('2029'),
subpartition SP_2029 values less than ('2030'),
subpartition SP_2031 values less than (maxvalue)
)
(
partition P_JCQZJ values ('JCQZJ') tablespace TS_JCQZJ,
partition P_JHJCQZJ values ('JHJCQZJ') tablespace TS_JHJCQZJ
);
4.写入测试数据,不作举例(communityid不同则写入不同主分区)
5.查询举例
select * from bz01 subpartition(P_JHJCQZJ_SP_2018);--按子分区查询这个接入点2017年的数据
select * from bz01 partition(P_JHJCQZJ); --按主分区查询这个接入点的数据
6.删除某接入点的数据,直接删分区然后重建分区场景举例:某接入点数据全部删除重传
--alter table bz01 drop partition P_JHJCQZJ; --这个接入点的数据就会被清理掉
--alter table bz01 add partition P_JHJCQZJ values ('JHJCQZJ') tablespace TS_JHJCQZJ;--新建该接入点分区,然后新插入的该接入点数据就会写入该分区(子分区会自动建的)
参考资料:
https://www.cnblogs.com/SarahLiu/p/6073961.html
https://blog.csdn.net/Venlin/article/details/47614669