前言
这种分区方式会根据插入的数据自动增加分区,不需要手工维护
分区字段必须是日期类型
一、按年分区 :
1、新建表、新建分区
create table pt_range_test2(
pid number(10),
pname varchar2(30),
create_date date
) partition by range(create_date)(
partition p_2019 values less than(to_date('2020-01-01', 'YYYY-MM-DD')),
partition p_2020 values less than(to_date('2021-01-01', 'YYYY-MM-DD')),
partition p_2021 values less than(to_date('2022-01-01', 'YYYY-MM-DD')),
partition p_2022 values less than(to_date('2023-01-01', 'YYYY-MM-DD')),
partition p_other values less than(MAXVALUE)
) enable row movement;
2、插入测试数据
insert into pt_range_test2 (pid, pname, create_date) values (1, '瑶瑶', TO_DATE (
'2020-02-12 15:56:12',
'SYYYY-MM-DD HH24:MI:SS'
));
insert into pt_range_test2 (pid, pname, create_date) values (1500, '倩倩', TO_DATE (
'2022-02-12 15:56:12',
'SYYYY-MM-DD HH24:MI:SS'
));
insert into pt_range_test2 (pid, pname, create_date) values (2, '优优', TO_DATE (
'2021-02-12 15:56:12',
'SYYYY-MM-DD HH24:MI:SS'
));
3、验证数据是否存储到各个分区
select 'p_2019' 分区名, t.* from pt_range_test2 partition (p_2019) t union all
select 'p_2020' 分区名, t.* from pt_range_test2 partition (p_2020) t union all
select 'p_2021' 分区名, t.* from pt_range_test2 partition (p_2021) t union all
select 'p_2022' 分区名, t.* from pt_range_test2 partition (p_2022) t;
二、按季度分区 :
create table test.test_r1
(
id NUMBER(20) not null primary key,
name VARCHAR2(20) not null,
joindate DATE not null
) tablespace test
partition by range(joindate) interval (numtoyminterval(3,'month'))
(partition p_before_2021 values less than (to_date('2022-01-01','YYYY-MM-DD'))
);
三、按月分区 :
create table test.test_r1
(
id NUMBER(20) not null primary key,
name VARCHAR2(20) not null,
joindate DATE not null
) tablespace test
partition by range(joindate) interval (numtoyminterval(1,'month'))
(partition p_before_2021 values less than (to_date('2022-01-01','YYYY-MM-DD'))
);
四、按天分区 :
create table test.test_r1
(
id NUMBER(20) not null primary key,
name VARCHAR2(20) not null,
joindate DATE not null
) tablespace test
partition by range(joindate) interval (numtodsinterval(1,'day'))
(partition p_before_2021 values less than (to_date('2022-01-01','YYYY-MM-DD'))
);
五、按周分区 :
create table test.test_r1
(
id NUMBER(20) not null primary key,
name VARCHAR2(20) not null,
joindate DATE not null
) tablespace test
partition by range(joindate) interval (numtodsinterval(7,'day'))
(partition p_before_2021 values less than (to_date('2022-01-01','YYYY-MM-DD'))
);
总结
如果此篇文章有帮助到您, 希望打大佬们能
关注
、点赞
、收藏
、评论
支持一波,非常感谢大家!
如果有不对的地方请指正!!!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/88158.html