系统从10g升级到11g后的头两天,用户发现有几个页面非常慢,从日志中看到,最慢的将近2个小时。马上查看代码发现两个页面使用到了两个很大的view,然后就做了些代码修改,测试通过。但是其中一个页面调查了很久都没有发现问题。
简化的代码如下(系统全部使用存储过程):
Store procedure 1:
select colA, functionA(cloB) as cloB from tableA;
functionA:
select count(1) from viewA,viewB where ....;
Store procedure A:
insert applog....;
sqlStr := 'select tableID from viewA,viewB where ....';
open cursor for sqlStr
loop
--这里做一些string的append
end loop;
close cursor;
insert applog....;
问题:
Store procedure 1 大概需要5到10秒, 但是Store procedure 2,在日志中发现平均需要1400秒,而在AWR报告中大概要4000左右,而我们在sqlplus上跑也只是5到10秒左右,哪位大虾能指引一下?