delete大量数据时正确姿势(待测试)

来源:互联网 发布:优盘数据恢复软件 编辑:程序博客网 时间:2024/06/05 04:23

参考:https://www.cnblogs.com/jyzhao/p/3879590.html


直接删除大量数据的影响:

1)可以由于undo表空间不足从而导致最终删除失败;

2)可以导致undo表空间过度使用,影响到其他用户正常操作;

改进方案:每删除1k行就提交一次。


declare     cursor [del_cursor] is select a.*, a.rowid row_id from [table_name] a order by a.rowid;begin     for v_cusor in [del_cursor] loop          if v_cusor.[time_stamp] < to_date('2014-01-01','yyyy-mm-dd') then               delete from [table_name] where rowid = v_cusor.row_id;          end if;          if mod([del_cursor]%rowcount,1000)=0 then               commit;          end if;     end loop;     commit;end;

[del_cursor] 游标名

[table_name] 删除数据的表名

[time_stamp] 用作过滤条件的时间字段名称


PS:

是否能够关闭表的log功能

alter table table_name nologging;

alter table table_name logging;


原创粉丝点击