原文链接:
https://blog.csdn.net/w1316022737/article/details/83274839

一:范围分区
就是根据数据库表中某一字段的值的范围来划分分区,例如:

  1. create table graderecord
  2. (
  3. sno varchar2(10),
  4. sname varchar2(20),
  5. dormitory varchar2(3),
  6. grade int
  7. )
  8. partition by range(grade)
  9. (
  10. partition bujige values less than(60), --不及格
  11. partition jige values less than(85), --及格
  12. partition youxiu values less than(maxvalue) --优秀
  13. ) ;

插入实验数据:

  1. insert into graderecord values('511601','魁','229',92);
  2. insert into graderecord values('511602','凯','229',62);
  3. insert into graderecord values('511603','东','229',26);
  4. insert into graderecord values('511604','亮','228',77);
  5. insert into graderecord values('511605','敬','228',47);
  6. insert into graderecord(sno,sname,dormitory) values('511606','峰','228');
  7. commit;

下面查询一下全部数据,然后查询各个分区数据,代码一起写:

  1. select * from graderecord;
  2. select * from graderecord partition(bujige);
  3. select * from graderecord partition(jige);
  4. select * from graderecord partition(youxiu);

全部数据如下:
Oracle数据库之分区讲解 - 图1

不及格数据如下:
Oracle数据库之分区讲解 - 图2

及格数据如下:
Oracle数据库之分区讲解 - 图3
优秀数据如下:
Oracle数据库之分区讲解 - 图4

说明:数据中有空值,Oracle机制会自动将其规划到maxvalue的分区中。

二,间隔分区
–创建间隔分区表

  1. CREATE TABLE SALES2
  2. (
  3. SALES_ID NUMBER,
  4. PRODUCT_ID VARCHAR2(5),
  5. SALES_DATE DATE NOT NULL
  6. )
  7. PARTITION BY RANGE(SALES_DATE)
  8. INTERVAL(NUMTOYMINTERVAL(3,'MONTH'))
  9. (PARTITION P1 VALUES LESS THAN (to_date('2013-04-1','yyyy/mm/dd')));

–插入数据

  1. INSERT INTO sales2 VALUES (1,'a',to_date('2013-08-1','yyyy/mm/dd'));

–获得分区情况

  1. SELECT table_name,partition_name
  2. FROM user_tab_partitions
  3. WHERE table_name=UPPER('sales2');

–查询输出结果,系统自动根据输入数据情况创建新分区“SYS_P82”

  1. TABLE_NAME PARTITION_NAME
  2. ----------------------------
  3. SALES2 P1
  4. SALES2 SYS_P21

–查询分区数据

  1. SELECT * FROM sales2 PARTITION(sys_P21);

查询oracle分区表存在多少个分区

注意,表名区分大小写

SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME=’分区表名称’;

  1. SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='GRADERECORD'

image.png