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

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;

 

posted @ 2015-05-19 13:58  々蕞嗳の﹎  阅读(520)  评论(0编辑  收藏  举报