分区表用途

分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。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
);
 
 
 
 

oracle 分区表的更多相关文章

  1. 谈一下如何设计Oracle 分区表

    在谈设计Oracle分区表之间先区分一下分区表和表空间的个概念: 表空间:表空间是一个或多个数据文件的集合,所有数据对象都存放在指定的表空间中,但主要存放表,故称表空间. 分区表:分区致力于解决支持极 ...

  2. 深入学习Oracle分区表及分区索引

    关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: •       Range(范围)分区 •       Has ...

  3. oracle 分区表和分区索引

    很复杂的样子,自己都没有看完,以备后用 http://hi.baidu.com/jsshm/item/cbfed8491d3863ee1e19bc3e ORACLE分区表.分区索引ORACLE对于分区 ...

  4. 谈一下怎样设计Oracle 分区表

    在谈设计Oracle分区表之间先区分一下分区表和表空间的个概念: 表空间:表空间是一个或多个数据文件的集合,全部数据对象都存放在指定的表空间中,但主要存放表,故称表空间. 分区表:分区致力于解决支持极 ...

  5. ORACLE分区表、分区索引详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt160 ORACLE分区表.分区索引ORACLE对于分区表方式其实就是将表分段 ...

  6. 【三思笔记】 全面学习Oracle分区表及分区索引

    [三思笔记]全面学习Oracle分区表及分区索引 2008-04-15 关于分区表和分区索引(About PartitionedTables and Indexes) 对于 10gR2 而言,基本上可 ...

  7. oracle分区表彻底删除的办法,处理删不掉的不规则表名

    Oracle分区表彻底删除的办法当对一个不再使用的分区表进行drop后,查询user_tab_partitions视图发现出现如下不规则的分区表表名:SQL> select distinct t ...

  8. Oracle分区表常见操作

    Oracle分区表常用于业务中大表使用,如历史交易记录表等,提高表记录查询效率.本文主要描述范围分区表的创建.新增以及索引创建. Oracle操作分区表相关信息 显示数据库所有分区表的信息:DBA_P ...

  9. ORACLE分区表操作

    ORACLE分区表的操作应用 摘要:在大量业务数据处理的项目中,可以考虑使用分区表来提高应用系统的性能并方便数据管理,本文详细介绍了分区表的使用. 在大型的企业应用或企业级的数据库应用中,要处理的数据 ...

  10. 关于Oracle分区表的理解

    Oracle分区表首要目的是用于管理数据文件,对数据文件进行划分和管理.但常常会听到通过分区表来提高性能的说法,实际上,分区表结合索引,加上有效的SQL语句,确实可以提高性能.什么是有效的SQL呢,就 ...

随机推荐

  1. RabbitMQ基本概念和使用

    RabbitMQ是一个消息代理,核心原理:发送消息,接收消息. RabbitMQ主要用于组件之间的解耦,消息发送者无需知道消息使用者的存在,反之亦然.   单向解耦                   ...

  2. win10下安装Wampservice过程中遇到的问题及解决办法

    今天在电脑上装Wampserver的时候遇到了几个问题,启动Wampserver无法成功,一直显示橙色.若启动成功Wampserver的图标会显示绿色. 下面的是解决方法 安装 在浏览器中搜索Wamp ...

  3. Dubbo架构设计详解(转自shiyanjun.cn)

    Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模 ...

  4. 推荐——Monkey《大话 app 测试——Android、iOS 应用测试指南》

    <大话移动——Android与iOS应用测试指南> 京东可以预购啦!http://item.jd.com/11495028.html 当当网:http://product.dangdang ...

  5. Django项目中model增加了新字段怎样更新?

    Django是不直接支持syncdb更新数据库的字段的,必须重新建立. 或者改一个表名新建一个表... 刚刚想出来一招: 自己在表上面先加一个字段,然后再在model上面改,貌似是可以的.

  6. NGUI图片字(Bitmap图片转文字)

    用图片字而不是图片 美术和程序的配合,需要程序能够很快抓住问题重点并提出解决方案.美术出的图片字比我们使用的字体更好好看,那么是否要一个个图片去拼成数字呢? NGUI创建图片字 准备材料 美术提供的数 ...

  7. centos下pip安装mysql_python

    今天在使用pip安装mysql_python时,遇到一些问题,现记录下来. 1.执行pip install mysql-python时,报错 Running setup.py egg_info for ...

  8. 一款免费好用的正则表达式工具:Regex Match Tracer

    推荐分享:一款免费好用的正则表达式工具:Regex Match Tracer  v2.1.5  free version 下载地址:Regex Match Tracer

  9. java 15-10 List的三个子类的特点

    List:(面试题List的子类特点) ArrayList: 底层数据结构是数组,查询快,增删慢. 线程不安全,效率高. Vector: 底层数据结构是数组,查询快,增删慢. 线程安全,效率低. Li ...

  10. java 15-2 Collection的高级功能测试

    A:  boolean addAll(Collection c):添加一个集合的元素 ,所有的元素,无论是否重复 B:  boolean removeAll(Collection c):移除一个集合的 ...