博客《oracle分区》中讲了oracle的几种分区,并且对于oracle的典型分区如Range分区和List分区给了示例。

在实际运用Range分区时,遇到了这样的难题:

createtableTMP_LXQ_1

(

PROPOSALNO             VARCHAR2(22),

STARTDATE              DATE

)

partitionbyrange(STARTDATE) (

partitionpart_t01values less than(to_date('2008-01-01','yyyy-mm-dd')) ,

partitionpart_t02values less than(to_date('2009-01-01','yyyy-mm-dd')) ,

partitionpart_t03values less than(to_date('2010-01-01','yyyy-mm-dd')) ,

partitionpart_t04values less than(to_date('2011-01-01','yyyy-mm-dd')) ,

partitionpart_t05values less than(to_date('2012-01-01','yyyy-mm-dd')) ,

partitionpart_t06values less than(to_date('2013-01-01','yyyy-mm-dd')) ,

partitionpart_t07values less than(maxvalue)

);

本例中的时间只是到了2013年,然后2013年之后的时间完全放入到了maxvalue中,这确实也是一种解决办法,即有除去2008-2013年的数据时,数据库不会报错。但是这样就改变了我们分区的初衷,分区是想让各个部分的数据均衡,以加快查询。

在oracle11g出现之前,实际工作中经常会遇到这种情况,而处理这种情况,通常是由DBA或者开发人员手动进行分区或者直接定义maxvalue。

Oracle 11g的新增特性Interval分区可以解决这个问题,下面介绍一下Interval分区。

一、interval分区

INTERVAL分区是Oracle11g新增的特性,它是针对Range类型分区的一种功能拓展。对连续数据类型的Range分区,如果插入的新数据值与当前分区均不匹配,Interval-Partition特性可以实现自动的分区创建。

示例:

createtable TMP_LXQ_1

(

proposalnovarchar2(22),

startdatedate

)

partitionby range(STARTDATE)

interval(numtoyminterval(1,'year'))(

partitionpart_t01 values less than(to_date('2008-01-01','yyyy-mm-dd')) ,

partitionpart_t02 values less than(to_date('2009-01-01','yyyy-mm-dd')) ,

partitionpart_t03 values less than(to_date('2010-01-01','yyyy-mm-dd')) ,

partitionpart_t04 values less than(to_date('2011-01-01','yyyy-mm-dd')) ,

partitionpart_t05 values less than(to_date('2012-01-01','yyyy-mm-dd')) ,

partitionpart_t06 values less than(to_date('2013-01-01','yyyy-mm-dd'))

);

如果插入2014年的值,系统会自动的添加一个分区,分区范围为2014-01-01到2014-12-31日。

二、interval分区和range分区的转换

ALTERTABLE TMP_LXQ_1 SET INTERVAL (numtoyminterval(1,'year'));

对于INTERVAL分区表,新增的超过分区上限的数据会自动导致对应的INTERVAL分区被建立。

同样INTERVAL分区表可以方便的转化为RANGE分区表,只需要不输入INTERVAL的值即可:

ALTER TABLETMP_LXQ_1 SET INTERVAL ();

三、interval分区的特点

1.由range分区派生而来

2.以定长宽度创建分区(比如年、月、具体的数字(比如100、500等))

3.分区字段必须是number或date类型

4.必须至少指定一个range分区(永久分区)

5.当有记录插入时,系统根据需要自动创建新的分区和本地索引

6.已有的范围分区可被转换成间隔分区(通过ALTER TABLE SET INTERVAL选项完成)

7.IntervalPartitioning不支持支持索引组织表

8.在Interval Partitioning表上不能创建domain index

四、interval分区问题

在oracle自动创建分区的时候,系统会默认指定一个分区名,系统默认创建的分区名字与我们的分区命名规范会有一定的差距,这个问题暂时还不知道有什么解决方法。

oracle interval-partition 解决range分区大难题的更多相关文章

  1. Oracle 11g新特性 Interval Partition

    分区(Partition)一直是Oracle数据库引以为傲的一项技术,正是分区的存在让Oracle高效的处理海量数据成为可能,在Oracle 11g中,分区技术在易用性和可扩展性上再次得到了增强.在1 ...

  2. mysql分区之range分区

    随着互联网的发展,各方面的数据越来越多,从最近两年大数据越来越强的呼声中就可见一斑. 我们所做的项目虽算不上什么大项目,但是由于业务量的问题,数据也是相当的多. 数据一多,就很容易出现性能问题,而为了 ...

  3. Oracle 分区表-Range分区

    原文:http://www.tuicool.com/articles/MzeM7r 一.什么是分区表 Oracle提供了分区技术以支持VLDB(Very Large DataBase).分区表通过对分 ...

  4. mysql 分区 按 PARTITION BY RANGE (TO_DAYS(startTime))

    to_days() Given a date date, returns a day number (the number of days since year 0). 给定一个date 日期,返回天 ...

  5. Oracle同义词、索引、分区

    同义词:是现有对象的一个别名 简化SQL语句 隐藏对象的名称和所有者 提供对对象的公共访问 同义词共有两种类型 私有同义词只能在其模式内访问,且不能与当前模式的对象同名 公有同义词可被所有的数据库用户 ...

  6. ORACLE表、索引和分区详解

    ORACLE表.索引和分区 一.数据库表 每种类型的表都有不同的特性,分别应用与不同的领域 堆组织表 聚簇表(共三种) 索引组织表 嵌套表 临时表 外部表和对象表 1.行迁移 建表过程中可以指定以下两 ...

  7. Oracle实践--PL/SQL表分区的基础

    PL/SQL基础入门之表分区 PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言.是对SQL的扩展.支 ...

  8. 简单了解,使用oracle中的索引,表分区

    索引的分类 如下: 物理分类 逻辑分类 分区或非分区索引 单列或组合索引 B树索引(标准索引) 唯一或非唯一索引 正常或反向键索引 基于函数索引 位图索引   B树索引 b树索引通常也称为标准索引,索 ...

  9. Oracle 分区表的索引、分区索引

    对于分区表,可以建立不分区索引.也就是说表分区,但是索引不分区.以下着重介绍分区表的分区索引. 索引与表一样,也可以分区.索引分为两类:locally partition index(局部分区索引). ...

随机推荐

  1. HDU 4169 树形DP

    Wealthy Family Problem Description While studying the history of royal families, you want to know ho ...

  2. hdu 2413(最大匹配+二分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2413 思路:由于要求最少的时间,可以考虑二分,然后就是满足在limit时间下,如果地球战舰数目比外星战 ...

  3. JLink v8克隆版破解向导(此方法仅适用XP32位版 WIN7及以上和64位均不支持 建议使用虚拟机)

    此方法仅适用XP32位版 WIN7及以上和64位均不支持 建议使用虚拟机 摘要 Jlink 4.5版本之后驱动会识别老的克隆版的JlinkV8,Jlink软件在启动时会提示为克隆版本后退出.目前主流的 ...

  4. uchome 积分体系

    一.总体流程 1):管理员在后台修改积分规则2):数据被写入数据表creditrule 中,并将数据写入缓存文件data/data_creditrule.php 中3):用户发表文章或者进行其他操作的 ...

  5. FMX的综合评价

    Cliff: 我个人觉得FMX值得学,因为可以做Mac软件,可以做Windows下的DirectUI,可以开发iOS/Android,而且是可视化开发,可利用RTL一切函数,包括可使用所有非可视控件. ...

  6. IDEA中利用JUnit进行单元测试

    打开IntelliJ IDEA工具,Alt+Ctrl+S,打开设置窗口,点击进入Plugins. 从插件资源库中搜索JunitGenerator V2.0版本

  7. mysql view

    定义:在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表. 1.视图是一个虚拟存在的表,视图可以包含表的全部或者部分记录,也可以由一个表或者多个表来创建.使用视图就可以不用看到数据表中的所有 ...

  8. 短信发送AZDG加密算法

    public static string passport_encrypt(string txt, string key)         {             //   使用随机数发生器产生  ...

  9. java实现附件预览(openoffice+swftools+flexpaper)

    先附上本人参考的文章,基于的 flexpaper版本 为 1.5,本人由于使用的是 2.1.9 ,故之后说明: 已经支持加载中文文件名 代码下载 1.概述 主要原理 1.通过第三方工具openoffi ...

  10. js与flash结合使用

    最近,做个了一个falsh和js 通信的小东西. flash负责接收参数和返回结果.js负责处理信息,接收返回结果,将结果返回到服务器端. 听着很复杂,做起来页面还是很简单的.用的技术还是不少的,fl ...