Oracle每10天删除数据,并重建索引

本文介绍了一种使用Oracle PL/SQL批量清理并归档旧数据的方法。通过循环设置日期范围,将指定时间段内的记录从主表迁移到归档表,并删除原始记录,同时定期重建索引来优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

declare
 datDateFrom date := to_date('2010/08/01 00:00:00','yyyy/mm/dd hh24:mi:ss');
 datDateTo date;
begin
 while datDateFrom <to_date('2014/01/01 00:00:00','yyyy/mm/dd hh24:mi:ss')
 loop
  datDateTo := least(datDateFrom + 10,to_date('2014/01/01 00:00:00','yyyy/mm/dd hh24:mi:ss'));
 
  INSERT INTO DRMARCHIVE.DBPROCLOG
  select createdate,pgm,status from dbproclog where createdate >= datDateFrom and createdate < datDateTo;
 
  delete from dbproclog where createdate >= datDateFrom and createdate < datDateTo;
  commit;
  Insertlog(SYSDATE, 'dbproclog_delete', to_char(datDateFrom,'yyyy/mm/dd hh24:mi:ss') || ' to ' ||  to_char(datDateTo,'yyyy/mm/dd hh24:mi:ss') || ' deleted');
   DBMS_LOCK.SLEEP(2);
 
  datDateFrom := datDateTo;
 end loop;
 
 execute immediate 'alter index DBPROCLOG_IDX2 rebuild ONLINE';
 execute immediate 'alter index DBPROCLOG_IDX1 rebuild ONLINE';
end;

 

转载于:https://www.cnblogs.com/JinvidLiang/p/4514413.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值