oracle 使用带参游标删除分区表

在生产环境中会产生大量的数据,而许多数据过了一定时间后就无效了,需要删除

一般可以根据时间来创建分区表,将不同时间的数据放在不同的分区表中,需要清理的时候不需要通过delete语句来删除,而是通过drop分区表的方式,这样速度会非常快

如 日志表 TEST_LOG

1.建立默认的分区 TEST_LOG
2.定时任务每个月创建一个分区表如:TEST_LOG20110809
3.定时任务删除过期分区表:

cursor del_part_table
(table_name in varchar2, part_prefix in varchar2 ,v_num in varchar2)
is
select PARTITION_NAME from user_tab_partitions
where TABLE_NAME=table_name
and PARTITION_NAME like part_prefix||'%' and PARTITION_NAME < part_prefix||to_char(add_months(sysdate,v_num),'YYYYMM');

table_name 指定表名 part_prefix 指定分区表前缀 v_num 表示当前时间和需要删除的月份的差

如:

for row in del_part_table('TEST_LOG','TEST_LOG','-3') loop
execute immediate 'alter table TEST_LOG
drop partition '||row.PARTITION_NAME;
end loop;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值