插入大量数据忘记提交,继续插入大量数据
这就好比是无休止的插入,对数据库造成的影响是巨大的,严重的是还没有好的解决方法
事件:
工作没多久,给公司最大的库做迁移,过去的月份数据全都进来了,我把新月份最大的2个表在一直窗口连续插入没有提交
insert into user.t select * from user.t@dblink where sys_date>=to_date('2014-09-01');
2000万数据已插入
insert into user.u select * from user.u@dblink where sys_date>=to_date('2014-09-01');
等待了3天,还是没有结果,导致了别的操作对这2个表的插入和查询都 受到影响,最后要么kill要么一直等下去
原理:插入数据未提交之前,旧数据是放在UNDO回滚段,新数据是在db buffer cache中,
提交后写入REDO,但是并不会同步到datafile,只有checkpoint后才写入datafile。
问题分析:所以以上操作导致了大量的undo数据,没有及时提交给undo和db buffer cache带来很大压力,导致了系统性能也下降了
解决办法参考http://blog.csdn.net/hanbowu/article/details/47981007