日期:2014-05-16  浏览次数:21333 次

同样一个存储过程有时候运行特别慢,为什么?
oracle中我开发了一个存储过程,存储过程中涉及到十几个表,
其中就一个表有20多w条记录,其他表的记录都是几百条的,
该存储过程正常运行都是90多秒搞定,
可总是会出现这种情况:比如今天在oracle用了几个小时以后,
我RUN下上面开发的那个存储过程,要1000秒以上,二十多分钟,特别吓人,
我以为可能是缓冲区里面东西太多了,我重启机器,然后再RUN那个存储过程
结果还要1000多秒.我始终想不明白这什么原因,因为我不是DBA,只是
刚做ETL开发没多久,想不出来怎么办,希望在csdn上得到帮助



------解决方案--------------------
你的SQL被挤出了共享池区,造成 了硬解析和软解析
------解决方案--------------------
或者执行计划改变了,看看执行计划
------解决方案--------------------
解决你这个问题,我认为你可以做ash报告,看最高5个事件是什么,然后再去查问题。

在$ORACLE_HOME/rdbms/admin下面有ashrpt.sql

启动sqlplus 
SQL> start ashrpt.sql

指定开始时间,结束时间,文件格式(text或者html),文件存放路径。

然后查看结果。