最近发现公司一报表系统(浏览器访问的)的某一个功能运行有问题,运行很长时间没有结果,报了ORA-01555错误。把这段SQL抓出来后在PL/SQL DEVELOPER中运行,需要10秒钟出来结果。
同样的SQL为何在不同地方运行速度相差这么大呢?会是什么原因造成的
同样的SQL为何在不同地方运行速度相差这么大呢?会是什么原因造成的
PL/SQL DEVELOPER中执行时走的是嵌套循环联结,而web访问时走的hash。在pl/sql developer中我又把具体时间替换成变量符号(:b1,:b2)时,发现执行计划也变成了hash join了
---------------------------------------------------------------------------------------------
1. 01555并不是那么严重的错误。。。仅仅就是跑不出来而已
2. 对于楼主的要求,看来用outline是最好的解决办法,因为不能改code。
3. 在系统层面改optimizer_index_cost_adj会影响其他SQL,危险性较大。
4. 可以试试搜集下统计信息,用CBO来试试。如果不行,就rollback delete
stats,还是用outline吧。。。11g可以考虑下sql profile,不过稳定性还是不如
outline
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13165828/viewspace-606345/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13165828/viewspace-606345/