Oracle 11g 通过间隔分区实现按月创建表分区
2016-02-19 00:00
549 查看
摘要: http://blog.csdn.net/gavinloo/article/details/25137567
在项目数据库设计过程中由于单表的数据量非常庞大,需要对表进行分区处理。由于表中的数据是历史交易,故按月分区,提升查询和管理。
由于之前对于表分区了解不多,为了实现上述功能查了很多资料,一开始的方向是通过Crontab调用Shell脚本来按月自动创建分区,或者使用Oracle的Job调用存储过程来自动创建分区。在研究上述两套方案的过程中,无意发现Oracle11g有间隔分区功能,对于使用Range分区的可以按年,月,日来自动生成分区。语法如下:
[sql]
view plain
copy
CREAT TABLE TABLE1
(
TABLE_ID NUMBER(8),
SUB_DATE DATE,
VALUE NUMBER(8)
)
PARTITION BY RANGE(SUB_DATE)
INTERVAL(NUMTOYMINTERVAL(1,'MONTH'))
(
PARTITION P1 VALUES LESS THAN(TO_DATE('2014-05-01','YYYY-MM-DD'))
);
2014年5月1日前的数据会放入p1分区,5月1日后的数据每月只要有数据,就会自动创建一个分区。
在项目数据库设计过程中由于单表的数据量非常庞大,需要对表进行分区处理。由于表中的数据是历史交易,故按月分区,提升查询和管理。
由于之前对于表分区了解不多,为了实现上述功能查了很多资料,一开始的方向是通过Crontab调用Shell脚本来按月自动创建分区,或者使用Oracle的Job调用存储过程来自动创建分区。在研究上述两套方案的过程中,无意发现Oracle11g有间隔分区功能,对于使用Range分区的可以按年,月,日来自动生成分区。语法如下:
[sql]
view plain
copy
CREAT TABLE TABLE1
(
TABLE_ID NUMBER(8),
SUB_DATE DATE,
VALUE NUMBER(8)
)
PARTITION BY RANGE(SUB_DATE)
INTERVAL(NUMTOYMINTERVAL(1,'MONTH'))
(
PARTITION P1 VALUES LESS THAN(TO_DATE('2014-05-01','YYYY-MM-DD'))
);
2014年5月1日前的数据会放入p1分区,5月1日后的数据每月只要有数据,就会自动创建一个分区。
相关文章推荐
- oracle通用分页语句rownum
- 说说自己学习Oracle的方法
- oracle之条件查询、模糊查询、运算符
- oracle 笔记
- Oracle12c中数据删除(delete)新特性之数据库内归档功能
- Oracle 11g导出的dmp文件导入到10g
- Oracle查询转换
- oracle面试题
- oracle11g密码效期及用户锁定
- oracle之去重与排序
- oracle参数之DEFERRED_SEGMENT_CREATION
- Oracle 常用函数
- 生产数据库要不要升级与ORACLE数据库支持服务内容和时限的问题
- Oracle ORA-01000: 超出打开游标的最大数
- oracle数据库知识点整理
- 移动表所在的表空间
- sqoop将oracle导入到hbase经验之谈
- ORACLE SQL常用用法
- Oracle数据库排名函数(Rank)实例详解
- Oracle 经常使用的改动语句