赞
踩
Oracle表分区是oracle开发中常用的技术,主要业务场景是针对到数据量,频繁查询的数据进行数据的分区处理,从而提高查询效率。
常用的分区方式主要有 range分区、hash分区、list分区、复合分区、间隔分区、system分区等。今天主要介绍间隔分区也就是由时间戳建立分区的知识,
如果想学习间隔分区,之前不得不先了解Oracle的interval函数
interval函数通常返回一段时间差
语法 INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO {YEAR | MONTH}]
注意:时间差只精确到年和月,precision是年或月的精确域,有效范围是0-9,精确值默认是2
下面是示例
--返回30年的时间长度
select interval '30' year from dual;
--返回40个月的时间长度
select interval '40' month from dual;
--返回30年3个月的时间长度
select interval '30-3' year to month from dual;
接下来介绍跟interval有关的两个函数
numtodsinterval(n,‘interval_unit’) 将 n 转换为 interval_unit指定的值,取值可以使 day,hour,minute,second
--当 interval_unit 取值为day的时候,表示n day
select numtodsinterval(100,'day') from dual;
--当 interval_unit 取值为 hour 的时候,表示n hour->m day
select numtodsinterval(100,'hour') from dual;
--当 interval_unit 取值为 minute 的时候,表示n minute->m hour
select numtodsinterval(100,'minute') from dual;
--当 interval_unit 取值为 second 的时候,表示n second->m hour
select numtodsinterval(100,'second') from dual;
select numtodsinterval(100,'second'),numtodsinterval(100,'hour'),numtodsinterval(100,'minute'),numtodsinterval(100,'second') from dual;
运行结果如下
numtoyminterval(n,‘interval_unit’) 将n转换为interval_unit指定的值,取值可以是year month
--当 interval_unit 取值为year的时候,表示n year
select numtoyminterval(100,'year') from dual;
--当 interval_unit 取值为month的时候,表示n month -> myear
select numtoyminterval(100,'month') from dual;
运行结果如下
间隔分区(Interval Partitioning)是一种分区自动化的分区,可以指定指定时间间隔进行分区,这是Oracle 11g的新特性
间隔分区实际上是由range分区引申的,最终实现了range分区的自动化
注意:只有Oracle企业版才具有分区功能
语法
create table interval_sale
(sid int,sdate timestamp)
partition by range(sdate)
interval(numtoyminterval(1,'MONTH')) --设置时间长度为1个月
(
--使用一个时间设置为起始值,小于该时间的默认进p1分区
partition p1 values less than (TIMESTAMP '2014-02-01 00:00:00.00')
)
如上示例,演示了以sdate字段为索引,2014-02-01之前日期为第一个分区,建立间隔索引,其中interval(numtoyminterval(1,‘MONTH’)) 表示以一个月为时长建立分区,例如,添加日期 2014-03-06 则会自动添加到P3,也就是第三个分区之中。
补充一个小知识
若删除数据库中的表之后,分区还存在吗?
答案是肯定的,Oracle的机制是保留原来的分区
则若想恢复则使用
flashback table tablename to before drop;
若想删除分区则使用
purge recyclebin;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。