日期:2014-05-17  浏览次数:20898 次

如何删除数据表大量数据
请问如何删除ORACLE 表里大量数据 用DELETE 没有反应 出现

ORA-12152:   TNS:   无法发送中断消息

------解决方案--------------------
因为数据量大的问题,用delete语句如果不及时提交可能给写日志缓冲带来问题,很大程度上影响性能。
如果你确定要将表的数据全部删掉,可以考虑使用truncate,但不会有日志生成,不能rollback。

如果只是删除部分,使用delete时最好分批提交delete操作以释放回滚段,如每删1000条提交一次。
另外需要注意的是:
delete操作不会释放表空间,保持所占空间的高水线不动。
delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate是ddl,操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger. 没有备份的情况下小心使用。
速度上:truncate> delete