oracle11g分区表维护,oracle11g分区表按时间自动创建

首先来介绍下numtodsinterval和numtoyminterval两个函数。

numtoyminterval和numtoyminterval是日期转换函数,作用:可以将数字转换成相应的日期单位时间

语法:NUMTOYMINTERVAL ( n,'char_expr' )

char_expr:日期描述,可以是YEAR和MONTH。

通常当我们使用add_month添加月时,如果输入是本月月底的日期,那么得到的也是月底的日期,比如add_month(to_date('2007-02-28','yyyy-mm-dd'),1)得到的就会是'2007-03-31',而不是'2007-03-28'。

此时,如果使用的是to_date('2007-02-28','yyyy-mm-dd')+numtoyminterval(1,'month'),那么得到的就是'2007-03-28'。

numtodsinterval的用法和numtoyminterval一样只是他的参数为day、hour、minute、second。

Oracle 11g之前,维护分区需要手工。11g之后使用interval来实现自动扩展分区,简化了维护。

根据年: INTERVAL(NUMTOYMINTERVAL(1,'YEAR'))

根据月: INTERVAL(NUMTOYMINTERVAL(1,'MONTH'))

根据天: INTERVAL(NUMTODSINTERVAL(1,'DAY'))

根据时分秒: NUMTODSINTERVAL( n,{ 'DAY'|'HOUR'|'MINUTE'|'SECOND'})

@H_301_12@create @H_301_12@table tablenames (fid @H_301_12@number @H_301_12@not @H_301_12@null @H_301_12@PRIMARY @H_301_12@KEY,sdate @H_301_12@date,addr varchar2(1000)) partition @H_301_12@by range (sdate) @H_301_12@interval (numtoyMinterval (1,'MONTH')) ( partition ptablenames @H_301_12@values less than (to_date('2017-02-13','yyyy-mm-dd')) )

创建完毕后通过如下sql进行查询分区:

@H_301_12@select partition_name @H_301_12@from user_tab_partitions @H_301_12@where table_name='tablenames';

新增不同年份的数据,就会发现会按照年自动生成对应分区。删除分区请查看:

https://blog.csdn.net/u013490585/article/details/79948987

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值