分区(Partition)一直是Oracle数据库引以为傲的一项技术,正是分区的存在让Oracle高效的处理海量数据成为可能,在Oracle 11g中,分区技术在易用性和可扩展性上再次得到了增强。
在10g的Oracle版本中,要对分区表做调整,尤其是对RANGE分区添加新的分区都需要DBA手动定期添加,或都使用存储过程进行管理。
在11G的版本中的Interval Partition不再需要DBA去干预新分区的添加,Oracle会自动去执行这样的操作,减少了DBA的工作量。Interval Partition是Range分区的一个扩展。
使用Interval Partition也有一些限制:
- You can only specify one partitioning key column, and it must be of NUMBER or DATE type.
- Interval partitioning is not supported for index-organized tables.
- You cannot create a domain index on an interval-partitioned table.
Interval Partition也可以创建复合分区:
1. Interval-range 2. Interval-hash 3. Interval-list
复制
以下是创建Interval分区表示例:
sys@ORCL> CREATE TABLE interval_sales ( prod_id NUMBER(6) , cust_id NUMBER , time_id DATE , channel_id CHAR (1) , promo_id NUMBER(6) , quantity_sold NUMBER(3) , amount_sold NUMBER(10,2) ) PARTITION BY RANGE (time_id) INTERVAL(NUMTOYMINTERVAL(1, 'MONTH' )) ( PARTITION p0 VALUES LESS THAN (TO_DATE( '1-1-2018' , 'DD-MM-YYYY' )), PARTITION p1 VALUES LESS THAN (TO_DATE( '1-1-2019' , 'DD-MM-YYYY' )), PARTITION p2 VALUES LESS THAN (TO_DATE( '1-7-2019' , 'DD-MM-YYYY' )), PARTITION p3 VALUES LESS THAN (TO_DATE( '1-1-2020' , 'DD-MM-YYYY' )) );
复制
Table created.
以下为常用的四种分区表类别:
1.1、范围分区表; 1.2、列表分区表; 1.3、哈希分区表; 1.4、组合分区表;
复制
1.1 范围分区表
CREATE TABLE range_Partition_Table( range_key_column DATE, NAME VARCHAR2(20), ID integer ) PARTITION BY RANGE(range_key_column) tablespace tbs_a ( PARTITION PART_202007 VALUES LESS THAN (TO_DATE('2020-07-1 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE tbs01, PARTITION PART_202008 VALUES LESS THAN (TO_DATE('2020-08-1 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE tbs02, PARTITION PART_202009 VALUES LESS THAN (TO_DATE('2020-09-1 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE tbs03 );
复制
1.2、列表分区表
CREATE TABLE list_Partition_Table( NAME VARCHAR2(10), DATA VARCHAR2(20) )PARTITION BY LIST(NAME) tablespace tbs_a ( PARTITION PART_01 VALUES('ME','PE','QC','RD'), PARTITION PART_02 VALUES('SMT','SALE') );
复制
1.3 哈希分区表
CREATE TABLE hash_Partition_Table( hash_key_column VARCHAR2(30), DATA VARCHAR2(20) ) PARTITION BY HASH(hash_key_cloumn) tablespace tbs_name ( PARTITION PART_0001, PARTITION PART_0002, PARTITION PART_0003, PARTITION PART_0004, PARTITION PART_0005 );
复制
1.4 组合分区表
CREATE TABLE range_hash_Partition_Table( range_column_key DATE, hash_column_key INT, DATA VARCHAR2(20) ) PARTITION BY RANGE(range_column_key) tablespace tbs_name SUBPARTITION BY HASH(hash_column_key) SUBPARTITIONS 2 ( PARTITION PART_202008 VALUES LESS THAN (TO_DATE('2020-08-01','yyyy-mm-dd'))( SUBPARTITION SUB_1, SUBPARTITION SUB_2, SUBPARTITION SUB_3 ), PARTITION 202009 VALUES LESS THAN (TO_DATE('2020-09-01','yyyy-mm-dd'))( SUBPARTITION SUB_1, SUBPARTITION SUB_2 )
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
786次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
664次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
591次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
547次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
531次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
510次阅读
2025-04-22 00:20:37
一页概览:Oracle GoldenGate
甲骨文云技术
496次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
469次阅读
2025-04-17 09:30:30
OR+DBLINK的关联SQL优化思路
布衣
382次阅读
2025-05-05 19:28:36
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
382次阅读
2025-04-15 14:48:05