Oracle 9.2.0.8.0 , Linux AS 4.5 64bit
因为是接手其他单位的一套Oracle9i 系统, 程序写得非常差, 几乎70% 都没有使用绑定变量, 还出现过一次
ORA-04031 , 虽然找出了很多运行次数较高的SQL 让开发的修改, 但是因为他们也是接手别人的程序, 感觉
不愿意改 (害怕修改完了上线出问题, 怪在自己头上) , 反复要求DBA想办法, 加 Mem, CPU 来解决 。
即使加硬件配置也需要时间, 生产系统程序还是时不时反映慢, 大家压力比较大, 没有办法了才将 cursor_sharing
值由原来的exact 修改为 force , 数据库在CPU方面的使用得到了很大的改善, 慢的情况基本消失, 但是没高兴半天,
2个比较重要的程序因为有group by 语句而报错 : ora-00937 , ora-00979 . 没有办法又修改为 exact (还好
是可以动态修改的).
在修改回来之前也想了其他办法, 因为这些group by 的SQL语句在Toad等工具中是可以执行的, 就是在程序中不行,
是和特定接口有关系的, 所以想到要将这些语句放到 procedure 中在DB端执行或者在SQL语句前面加入
alter session set cursor_sharing = exact ; 或者让他们改为其他接口 (比如OLEDB, ODAC) 测试一下 。
但是2个程序中居然还有一个程序没有拿到源代码, .
万能的Puber , 是否有其他解决方法 ? 改回来了不知道啥时候系统又得慢了 .......
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-712496/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-712496/