Oracle中如何更新一张大表记录(二)

2014-11-24 17:24:22 · 作者: · 浏览: 1
许膨胀(autoextend=no),Oracle DML操作会在一定时候报错。即使允许进行膨胀,也会伴随大量的数据文件DBWR写入动作。这也就是我们在进行大量update的时候,在event等待事件中能看到很多的DBWR写入。因为,这些写入中,不一定都是更新你的数据表,里面很多都是Undo表空间写入。

同时,长时间的等待操作,触动Oracle和OS的负载上限,很多奇怪的事情也可能出现。比如进程僵死、连接被断开。


这种方式最大的问题在于rollback动作。如果我们在长时间的事务过程中,发生一些异常报错,通常是由于数据异常,整个数据需要回滚。回滚是Oracle自我保护,维持事务完整性的工具。当一个长期DML update动作发生,中断的时候,Oracle就会进入自我的rollback阶段,直至最后完成。这个过程中,系统是比较运行缓慢的。即使重启服务器,rollback过程也会完成。


所以,这种方法在处理大表的时候,一定要慎用!!起码要评估一下风险。