环境 操作系统:AIX小机 5.3.0.8 数据库:Oracle 10G R2 RAC
现象:
数据库奇慢,插入70万条数据到临时表得1个小时还没完成,SELECT .... FROM WHERE .....语句逻辑简单
处理过程:
先查动态性能视图v$session_wait发现很多recyclebin的等待、row cache lock 等待、libraray cache lock等待等等;
查alert日志什么错误都没发现;
生成awr,Top 5发现有row cache lock等待和解析执行时间倒序(从大到小的)语句delete recyclebin ...,如下图:
然后就做了实验,一次少插入点,逐渐的增多,但是插入了好长时间还没插入完70W条数据,最后根据动态性能视图和awr报告,关闭了recyclebin alter system set recyclebin=FLASE,等再插入数据的时候数据库就报错了,说是表空间不足,然后我就
1:purge了回收站:purge recyclebin;
2:增加表空间大小,
alter tablespace t_space add datafile '/u01/oradata/rrc_t06.dbf' size 30720M auto extend off;
alter tablespace t_space add datafile '/u01/oradata/rrc_t07.dbf' size 30720M auto extend off;
等了10分钟再去插入数据时候居然很开的插进去了,插入成功,且速度很快。
总结:
在没有purge回收站内容时候插入一点数据,oralce 自动维护回收站,删除回收站一部分进入表空间比较早的object,故速度很慢也不会报错,且等会就能先前不能插入的数据插入到表中,但我关闭回收站后插入数据oralce不能自动清理回收站内的object,就会报错说是表空间不足,然后再purge recyclebin和增加数据文件后渐渐的就可以把数据插入到数据库中,但是还有一个问题我比较疑惑:问什么在报表空间不足的时候我查询表空间情况居然还没满,难道此用户下的对象(recyclebin里的)所占空间不在表空间里显示出来?
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16400082/viewspace-706628/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16400082/viewspace-706628/