数据库:Oracle10g(10.2)
应用:一个C#的程序写数据库,一个JSP程序读数据库
负载:目前处于开发阶段,基本上只有3-4个用户访问JSP网站。
现象:重新启动后的数据库查询非常快,但是用着用着越来越慢,所有JSP网页都检查过,记录集、statement和数据库连接都已被释放,请问该如何查找原因?多谢!

解决方案 »

  1.   

    提点简单的思路吧:
    1、首先检查程序的设计思路,比如程序逻辑上有没有造成锁的现象,特别是与后台交互频繁的部分;
    2、如果程序设计上不存在大的缺陷就要从数据库上来查找问题,具体可以在现有基础上从逻辑数据库中查找是否存在锁的现象;找出存在锁的问题;
    3、oracle数据库在未完整调优的情况下需要对现有各种存在影响数据库的sql脚本进行提取整理,特别是开发初期;
    4、对数据库进行优化,根据操作系统参数对各项参数进行调整;(不过在3、4个用户的情况下,应该不是数据库问题,除非数据库版本装的都有问题……)
    5、通过数据库监控工具找出排队等候,影响性能的sql语句,再对sql进行优化,或者干脆用工具直接优化,提高开发速度。以上仅供参考,我觉得存在问题的最大可能是逻辑设计或者在建模的时候有问题,不过有时候试试把数据库重启下说不定可能会好些(这个是因为可能先前有锁存在)
      

  2.   

    1.首先检查一下你的sga设置,进入sqlplus模式,输入show sga查看你的sga配置是否理想
    2.查看性能视图的v$session_wait 和v$sysstat看看是什么等待事件拖累数据库,
    3.另外就是你执行的dml有没有及时提交,造成事务锁定表或者记录?可以查看v$transaction表,看看有没有未提交事务.
      

  3.   

    用statspack检查一下吧
    在你刚启的时候快照一下,然后在你慢的不行的时候快照一下
    然后生成statspack文件,发上来看看