事情是这样的,我的一个程序,本身非常简单就是读A表然后进行计算再插入B表,同时对A表中记录进行更新。A表有2000万条记录,我在开发环境(Aix+Oracle 9i,程序用Pro*C编写) 执行这个程序只要1小时左右,但换到生产环境(Aix+Oracle 9i,CPU和内存都比开发好)要执行5小时左右.关键是在开始移过来时也差不多执行1小时,后来由于A表(独立表空间,独立数据文件)所在表空间不够,因此加了个数据文件(由于原来表空间数据文件所在磁盘分区满了,所以后来加的这个数据文件放在另一个磁盘空间),加了过后执行程序一下子变得非常慢,我把整个表及表空间全删掉后,再重新建(恢复到原来的独立表空间独立数据文件)但时还是要执行5小时,请问如何解决,谢谢啦!!!

解决方案 »

  1.   

    如果是存储的话,建议检查下控制器,硬盘那些硬件是否有问题。多个程序用一套设备也有可能会造成资源争用,导致性能大幅下降。还是先看看日志,观察观察系统,是否IOWAIT比较高,再用iostat检查下什么盘,SWAP?吞吐量比较大,个人浅见是IO的问题
      

  2.   

    两边都做一个statspack的报告看看,比较看看。
      

  3.   

    考虑过你的sql的效率问题没有?个人很自然的想到,由于数据量的增加,导致性能的下降
      

  4.   


    还是用statspack做一下分析先,两边都做,然后比较报告。