ORACLE分区表自动清理分区

16 篇文章 0 订阅
14 篇文章 0 订阅

背景介绍

ORACLE按照日期创建分区表,仅保留一年数据,每天清理一年前的分区数据。

实现方式

每次清理均处理一年前全部分区,即时某次调度执行失败,也不会造成垃圾数据堆积。

示例代码

--创建存储过程
create or replace procedure zxjy_ora.del_wen_pt
as
 v_sql1 varchar2(2000);
begin
  FOR cur IN (select PARTITION_NAME from user_tab_partitions where table_name='WEN' AND substr(partition_name,2,8)<=to_char(sysdate-366,'yyyymmdd')) LOOP
      v_sql1:='alter table ZXJY_ORA.WEN drop partition '||cur.pname||' ';
      execute immediate v_sql1;
  END LOOP;
end del_wen_pt;
/

---创建调度
BEGIN
DBMS_SCHEDULER.CREATE_SCHEDULE (
schedule_name     => 'sch_del_wen_pt',
start_date        => SYSDATE,
repeat_interval   => 'FREQ=DAILY; BYHOUR=22;BYMINUTE=30;BYSECOND=0',
comments          => 'EACH ONE DAYS delete A old PARTITION ');
end;
/

--创建作业执行调度
BEGIN 
DBMS_SCHEDULER.CREATE_JOB ( 
job_name => 'JOB_DEL_WEN_PT', 
job_type => 'STORED_PROCEDURE', 
job_action => 'zxjy_ora.del_wen_pt', 
schedule_name => 'sch_del_wen_pt', enabled => true); 
END; 
/

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wenxuechaozhe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值