同样一个存储过程有时候运行特别慢,为什么?

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

...全文
362 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fingerfox 2011-04-03
  • 打赏
  • 举报
回复
解决你这个问题,我认为你可以做ash报告,看最高5个事件是什么,然后再去查问题。

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

启动sqlplus
SQL> start ashrpt.sql

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

然后查看结果。
fingerfox 2011-04-03
  • 打赏
  • 举报
回复
sqlplus

set autotrace traceonly;

运行sql 语句即可。
  • 打赏
  • 举报
回复
to java3344520:
请问RUN存储过程时候,我怎么去执行explain plan?
iqlife 2011-04-01
  • 打赏
  • 举报
回复
或者执行计划改变了,看看执行计划
iqlife 2011-04-01
  • 打赏
  • 举报
回复
你的SQL被挤出了共享池区,造成 了硬解析和软解析
碧水幽幽泉 2011-04-01
  • 打赏
  • 举报
回复
在sql窗口按F5可以看到explain plan。
  • 打赏
  • 举报
回复
图片就是今天RUN这个存储过程所花的时间,结果1700秒,害的下午客户许多的问题都没解决.
我想这个问题不是SQL优化的问题了,因为正常跑的话,都是90多秒,
所以这可能需要用到DBA管理上的知识了,希望朋友一赐良言

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧