有一个存储过程平均每天要处理60多万条数据,正常情况下5分钟左右能执行完毕,但是不知什么原因,现在要将近五个小时才能执行完毕。
第一,服务器硬件环境一样。
第二,操作系统liux+ORACLE 10g
第三,同一个存储过程
第四,处理同一批数据
症状:在以上条件相同的情况下,时快时慢,快的时候5分钟,慢的时候5个小时
在这期间里,以上四种条件没有任何变化。
不知道是什么原因,希望有经验的高手,帮忙想想办法。
我就不明白,为什么同一个过程,同一批数据,同一个执行环境,为什么时快时慢!
急!!!在线等!

解决方案 »

  1.   

    你的现象说的太泛泛了:)
    影响过程执行速度的原因很多:
    比如:
    1.比如过程操作的表正在被别人操作,那么过程就要等待,速度就慢了
    2.你处理的数据过多导致临时回滚段大小不够 正在扩充那么也会使速度变慢
    3.系统可能正在处理重做日志文件
    4.数据库服务器所在机器正在处理不同的事情 导致CPU使用的争抢:)
    5.网络问题
    6.....
    等等不一而足 ,所以单从你说的现象是不能确定问题所在的
      

  2.   

    PS:60多万条数据对与ORACLE来说并不大,影响速度的原因有服务器硬件和数据库配置和过程的编码
      

  3.   

    谢谢两位指教,针对baojianjun(包子) 你说的几点原因,我解释一下,
    第一,这台服务器只有我一个人在用,不会存在别人使用这种可能。
    第二,处理的数据过多导致临时回滚段大小不够 正在扩充那么也会使速度变慢,在这里我的程序都是每处理完100条就提交一次事务,应该不会有问题.
    第三,系统可能正在处理重做日志文件,这个原因我不太确定!!
    第四,这台机器上面只有oracle在运行,cpu占用也监测过,cpu和内存占用都非常的少,不会出现CPU使用的争抢
    第五,网络问题,这个程序是在这台服务器上本地运行的,不是远程调用的
    还有就是如果是存储过程编码的问题,那么为什么,同样的编码处理同样的数据,昨天很快,今天很慢,出现这种时快时慢的现像呢?这种现像会跟编码有关系吗?
    另外这个过程在另外一台服务器也同进运行着,那台服务器是windows+oracle9i的,一切正常!
    所以我觉得至少根编码没关系,应该就是系统环境和oracle配置的问题。另外还有一个奇怪的现像就是,我的windows+oracle9i这台机器的oracle的表空间占用是五个数据文件都是2G一个,每个占用都是70%左右很平均。
    但是liux+oracle10g那台服务器,也是五个数据文件都是2G一个。每个占用情况很奇怪,有一个占用是85%,一个占用是45%,还有一个占用是-45%(负的,奇怪呀),还有就是百分之十几的,这种不平均情况,不知道会不会是这个原因造成的数据库时快时慢呢?