当前位置:  数据库>oracle

浅谈Oracle分区表之范围分区

    来源: 互联网  发布时间:2017-04-24

    本文导语: 在Oracle 10g世界里面,分区表主要分range,hash,list,range-hash,range-list五种类型,在oracle 11g中,则发展到了3*3的分区组合类型,以满足更多的应用场景!但无论在什么情况下,范围分区都是最常见的一种表分区方式,尤其在需要对过期...

Oracle 10g世界里面,分区表主要分range,hash,list,range-hash,range-list五种类型,在oracle 11g中,则发展到了3*3的分区组合类型,以满足更多的应用场景!但无论在什么情况下,范围分区都是最常见的一种表分区方式,尤其在需要对过期数据进行整理归档,只保留一定时期内的数据的条件下,几乎都会优先选择使用范围分区的方式!分区表可以说是一项百利而无一害的技术,当数据量达到一定的级别后(通常是超过100G后),就算使用了ASM技术,数据库中一样会产生严重的I/O等待事件

下面来简要介绍下范围分区,范围分区的主要优点主要如下:
1:分区表可以将表存储在多个表空间内,进而离散I/O;
2:同时各个分区维护各自的本地索引(一般使用local索引,而不是global索引);
3:编程语言 iis7站长之家语句可以根据索引进行分区范围扫描,减少查询语句所带来的一致性读;
4:可以对单个分区进行备份或者truncate,归档或者清除过期的数据;
5: 可以方便的对表的分区进行添加,删除,truncate,拆分和合并操作




一:创建一张分区表,分区的条件是以销售日期来界定,同时分区的索引为本地索引,每个分区的对应一个单独的表空间,基于离散I/O和方便管理的双重需要

SQL> create table sale_data
  2  (sale_id number(5), salesman_name varchar2(30),sales_date date)
  3  partition by range(sales_date)
  4  (
  5  partition sales_01 values less than (to_date('01/02/2012','DD/MM/YYYY')) tablespace tbs_sale01,
  6  partition sales_02 values less than (to_date('01/03/2012','DD/MM/YYYY')) tablespace tbs_sale02,
  7  partition sales_03 values less than (to_date('01/04/2012','DD/MM/YYYY')) tablespace tbs_sale03,
  8  partition sales_04 values less than (to_date('01/05/2012','DD/MM/YYYY')) tablespace tbs_sale04,
  9  partition sales_05 values less than (to_date('01/06/2012','DD/MM/YYYY')) tablespace tbs_sale05,
 10  partition sales_06 values less than (to_date('01/07/2012','DD/MM/YYYY')) tablespace tbs_sale06,
 11  partition sales_07 values less than (to_date('01/08/2012','DD/MM/YYYY')) tablespace tbs_sale07,
 12  partition sales_08 values less than (to_date('01/09/2012','DD/MM/YYYY')) tablespace tbs_sale08,
 13  partition sales_09 values less than (to_date('01/10/2012','DD/MM/YYYY')) tablespace tbs_sale09,
 14  partition sales_10 values less than (to_date('01/11/2012','DD/MM/YYYY')) tablespace tbs_sale10,
 15  partition sales_11 values less than (to_date('01/12/2012','DD/MM/YYYY')) tablespace tbs_sale11,
 16* partition sales_12 values less than (to_date('31/12/2012','DD/MM/YYYY')) tablespace tbs_sale12)
Table created.















SQL> select owner,partitioning_type,partition_count,status from dba_part_tables where table_name='SALE_DATE';

OWNER          PARTITI PARTITION_COUNT STATUS
------------------------------ ------- --------------- --------
SALE          RANGE      12 VALID

SQL> create index ind_sale_data_date on sale_data(sale_id) local
  2  (
  3  partition sales_01 tablespace tbs_sale01,
  4  partition sales_02 tablespace tbs_sale02,
  5  partition sales_03 tablespace tbs_sale03,
  6  partition sales_04 tablespace tbs_sale04,
  7  partition sales_05 tablespace tbs_sale05,
  8  partition sales_06 tablespace tbs_sale06,
  9  partition sales_07 tablespace tbs_sale07,
 10  partition sales_08 tablespace tbs_sale08,
 11  partition sales_09 tablespace tbs_sale09,
 12  partition sales_10 tablespace tbs_sale10,
 13  partition sales_11 tablespace tbs_sale11,
 14* partition sales_12 tablespace tbs_sale12)
Index created.













SQL> select segment_name,partition_name,tablespace_name from user_segments where segment_name in ('SALE_DATA','IND_SALE_DATA_DATE');

SEGMENT_NAME      PARTITION_NAME      TABLESPACE_NAME
-------------------- ------------------------------ --------------------
SALE_DATA      SALES_01       TBS_SALE01
SALE_DATA      SALES_02       TBS_SALE02
SALE_DATA      SALES_03       TBS_SALE03
SALE_DATA      SALES_04       TBS_SALE04
SALE_DATA      SALES_05       TBS_SALE05
SALE_DATA      SALES_06       TBS_SALE06
SALE_DATA      SALES_07       TBS_SALE07
SALE_DATA      SALES_08       TBS_SALE08
SALE_DATA      SALES_09       TBS_SALE09
SALE_DATA      SALES_10       TBS_SALE10
SALE_DATA      SALES_11       TBS_SALE11











SEGMENT_NAME      PARTITION_NAME      TABLESPACE_NAME
-------------------- ------------------------------ --------------------
SALE_DATA      SALES_12       TBS_SALE12
IND_SALE_DATA_DATE   SALES_01       TBS_SALE01
IND_SALE_DATA_DATE   SALES_02       TBS_SALE02
IND_SALE_DATA_DATE   SALES_03       TBS_SALE03
IND_SALE_DATA_DATE   SALES_04       TBS_SALE04
IND_SALE_DATA_DATE   SALES_05       TBS_SALE05
IND_SALE_DATA_DATE   SALES_06       TBS_SALE06
IND_SALE_DATA_DATE   SALES_07       TBS_SALE07
IND_SALE_DATA_DATE   SALES_08       TBS_SALE08
IND_SALE_DATA_DATE   SALES_09       TBS_SALE09
IND_SALE_DATA_DATE   SALES_10       TBS_SALE10  











SEGMENT_NAME      PARTITION_NAME      TABLESPACE_NAME
-------------------- ------------------------------ --------------------
IND_SALE_DATA_DATE   SALES_11       TBS_SALE11
IND_SALE_DATA_DATE   SALES_12       TBS_SALE12



    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle通过行范围查询取4至10行
  • 性能陷阱:Oracle表连接中范围比较
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,