博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle 分区表
阅读量:5912 次
发布时间:2019-06-19

本文共 4797 字,大约阅读时间需要 15 分钟。

分区表用途

分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间中。查询时可以通过查询表来访问各个分区中的数据,也可以通过在查询时直接指定分区的方法来进行查询。

分区表的优点:

(1)由于将数据分散到各个分区中,减少了数据损坏的可能性;

(2)可以对单独的分区进行备份和恢复;

(3)可以将分区映射到不同的物理磁盘上,来分散IO;

(4)提高可管理性、可用性和性能。

数据量大的表,一般大于2GB;数据有明显的界限划分;对于Long和Long Raw类型列不能使用分区。

 分区表类型

一般包括范围分区,散列分区,列表分区、复合分区(范围-散列分区,范围-列表分区)、间隔分区和系统分区等。

 范围分区

范围分区根据数据库表中某一字段的值的范围来划分分区。

【语法】

在Create Table语句后增加

PARTITION BY RANGE(column_name)

(

PARTITION part1 VALUES LESS THAN (range1) [TABLESPACE tbs1],

PARTITION part2 VALUES LESS THAN (range2) [TABLESPACE tbs2],

           ....

PARTITION partN VALUES LESS THAN (MAXVALUE) [TABLESPACE tbsN]

);

 

【说明】

MAXVALUE:当分区列值都不在设置的范围内时,新增数据将到这个分区中

 

【示例】

-- 创建表,并设置分区

create table myemp

( empno number(4) primary key,

  ename varchar2(10),

  hiredate date,

  sal   number(7,2),

  deptno number(2)

)

partition by range(sal)

(

  partition p1 values less than(1000),

  partition p2 values less than(2000),

  partition p3 values less than(maxvalue)

);

 

-- 插入数据

insert into myemp(empno,ename,hiredate,sal,deptno)

select empno,ename,hiredate,sal,deptno from emp;

 

-- 查看工资1000-2000的数据

select * from myemp partition(p2);

 

-- 删除工资小于1000的数据

delete from myemp partition(p1);

 

-- 查看数据

select * from myemp;

 

 

列表分区

列表分区明确指定了根据某字段的某个具体值进行分区,而不是像范围分区那样根据字段的值范围来划分的。

【语法】

在Create Table语句后增加

PARTITION BY LIST(column_name)

(

PARTITION part1 VALUES (values_list1),

PARTITION part2 VALUES (values_list2),

           ....

PARTITION partN VALUES (DEFAULT)

);

其中:column_name是以其为基础创建列表分区的列。

      part1...partN是分区的名称。

      values_list是对应分区的分区键值的列表。

      DEFAULT关键字允许存储前面的分区不能存储的记录。

 

 

【示例】

-- 创建表,并设置分区

create table myemp2

( empno number(4) primary key,

  ename varchar2(10),

  hiredate date,

  sal   number(7,2),

  deptno number(2)

)

partition by list(deptno)

(

  partition dept10 values(10),

  partition dept20 values(20),

  partition dept30 values(30),

  partition deptx  values(default)

);

 

-- 插入数据

insert into myemp2(empno,ename,hiredate,sal,deptno)

select empno,ename,hiredate,sal,deptno from emp;

 

-- 查看部门20的数据

select * from myemp2 partition(dept20);

 

-- 删除部门30的数据

delete from myemp2 partition(dept30);

 

-- 查看数据

select * from myemp2;

 

 

 

 

 

 

 

建12个月的表空间:(我是建在裸设备上的,你可以根据你自己的情况改变)
create tablespace TBS_USER_201201 datafile '/dev/vgdata1/rlv_user_201201_01' size 8100M;
create tablespace TBS_USER_201202 datafile '/dev/vgdata1/rlv_user_201202_01' size 8100M;
create tablespace TBS_USER_201203 datafile '/dev/vgdata1/rlv_user_201203_01' size 8100M;
create tablespace TBS_USER_201204 datafile '/dev/vgdata1/rlv_user_201204_01' size 8100M;
create tablespace TBS_USER_201205 datafile '/dev/vgdata1/rlv_user_201205_01' size 8100M;
create tablespace TBS_USER_201206 datafile '/dev/vgdata1/rlv_user_201206_01' size 8100M;
create tablespace TBS_USER_201207 datafile '/dev/vgdata1/rlv_user_201207_01' size 8100M;
create tablespace TBS_USER_201208 datafile '/dev/vgdata1/rlv_user_201208_01' size 8100M;
create tablespace TBS_USER_201209 datafile '/dev/vgdata1/rlv_user_201209_01' size 8100M;
create tablespace TBS_USER_201210 datafile '/dev/vgdata1/rlv_user_201210_01' size 8100M;
create tablespace TBS_USER_201211 datafile '/dev/vgdata1/rlv_user_201211_01' size 8100M;
create tablespace TBS_USER_201212 datafile '/dev/vgdata1/rlv_user_201212_01' size 8100M;
创建一张分区表:(一张测试表)
create table T_NM_ADMIN_CENTER  (
   ID                   VARCHAR2(32)                    not null,
   CODE                 varchar2(6)                     not null,
   NAME                 varchar2(50)                    not null,
   ADDRESS              varchar2(80),
   POSTALCODE           varchar2(8),
   PRINCIPAL            varchar2(50),
   LINKMAN              varchar2(50),
   PHONE                varchar2(16),
   URL                  varchar2(50),
   EMAIL                varchar2(60),
   IS_ONLINE            CHAR(1),
   DATA_DATE            DATE,
   SUBMIT_DATE          DATE                           default SYSDATE,
   MODIFY_TIME          DATE
)
partition by range (DATA_DATE)
(
  partition P_201201 values less than (to_date('2012-02-01','YYYY-MM-DD')) tablespace TBS_USER_201201,
  partition P_201202 values less than (to_date('2012-03-01','YYYY-MM-DD')) tablespace TBS_USER_201202,
  partition P_201203 values less than (to_date('2012-04-01','YYYY-MM-DD')) tablespace TBS_USER_201203,
  partition P_201204 values less than (to_date('2012-05-01','YYYY-MM-DD')) tablespace TBS_USER_201204,
  partition P_201205 values less than (to_date('2012-06-01','YYYY-MM-DD')) tablespace TBS_USER_201205,
  partition P_201206 values less than (to_date('2012-07-01','YYYY-MM-DD')) tablespace TBS_USER_201206,
  partition P_201207 values less than (to_date('2012-08-01','YYYY-MM-DD')) tablespace TBS_USER_201207,
  partition P_201208 values less than (to_date('2012-09-01','YYYY-MM-DD')) tablespace TBS_USER_201208,
  partition P_201209 values less than (to_date('2012-10-01','YYYY-MM-DD')) tablespace TBS_USER_201209,
  partition P_201210 values less than (to_date('2012-11-01','YYYY-MM-DD')) tablespace TBS_USER_201210,
  partition P_201211 values less than (to_date('2012-12-01','YYYY-MM-DD')) tablespace TBS_USER_201211,
  partition P_201212 values less than (to_date('2013-01-01','YYYY-MM-DD')) tablespace TBS_USER_201212
);
 
 
 
 

转载地址:http://idmpx.baihongyu.com/

你可能感兴趣的文章
servlet中doGet()和doPost()的区别
查看>>
软件开发过程文档清单【转】
查看>>
五款超实用的开源SVG工具
查看>>
模板汇总——AC自动机
查看>>
SSIS包定时执行
查看>>
Linux Shell远程执行命令(命令行与脚本方式)
查看>>
JVM调优的几种策略(转)
查看>>
&&运算符和||运算符的优先级问题 专题
查看>>
老子智慧-大道甚夷
查看>>
keepalived配置文件解析系列之(一)keepalived简介及配置文件介绍
查看>>
人工智能博弈树算法做的井字棋游戏
查看>>
ajax的19道经典面试题
查看>>
[日常] Go语言圣经--作用域,基础数据类型,整型
查看>>
[日常] 算法-单链表的创建-尾插法
查看>>
[PHP] 算法-顺时针打印矩阵的PHP实现
查看>>
[PHP]实体类基类和序列化__sleep问题
查看>>
Kafka server.properties配置说明
查看>>
鼠标浮上 图片边框变色
查看>>
1706-1组 如何计算团队成员贡献分
查看>>
4在二元树中找出和为某一值的所有路径
查看>>