天天看点

清理历史数据方法

概述:

根据公司业务需要,经常会有历史数据迁移清理的工作,当表是分区表是,比较方便,但是如果不是分区表,经常使用delete操作,但是delete数据库量大,会遇到很慢,有时会导致数据库出现问题,甚至可能出现锁的问题,所以一般采用存储过程批量提交删除的方法:如下为存储过程内容

create or replace procedure pro_del is

v_i number := 0;

begin

for c in (select t.*, rowid nrowid

from RESULT t

where t.CREATE_TIME < to_date(‘201607’, ‘yyyymm’)) loop

delete from RESULT where rowid = c.nrowid;

v_i := v_i + 1;

if (v_i >= 1000) then

commit;

v_i := 0;

end if;

END LOOP;

end pro_del;