您的位置:首页 > 数据库 > Oracle

oracle 删除大量数据

2012-09-21 16:51 246 查看
当然在,在业务的设计中 ,一般情况下 ,都不宜设计成一下子删除大量的数据 的模式.

但是在一些临时需求中 ,这样的需求又是不可避免的。

delete big_table_name where send_time < one_time

这样的直接删除是非常致命的,尤其是在删除的数据量比较大的时候 UNDO空间不是无限大的。

所以在删除的时候 就必须得把这样的删除分割成为一小段一小段的删除。

declare

maxrows number default 1000;

delete_ct number default 0;

begin

select count(1)/maxrows into delete_ct from big_table_name where create_time < one_time;

for i in 1..TRUNC(delete_ct)+1

loop

delete big_table_name where send_time < one_time and rownum <= maxrows;

commit;

end loop ;

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: