环境: Windows 2003 server 
       Oracle 9i
       Weblogic 8
硬件:IBM x346服务器  
      CPU:Xeon 3GHz  双CPU
      内存:1GB DDR2
现象:有套应用在服务器上跑,2006年上线,最近一年用户称在查询显示结果时缓慢,要等待数分钟,
      将查询的SQL语句直接在数据库里查询也是十分缓慢。
         
      原以为是因为相关表内的数据过多导致,经用户同意,备份数据库后,将2013年之前的数据删除。
      重启服务器和数据库,未开放用户访问的情况下,测试做同样的查询操作,只要15秒出结果。
      开放用户访问,使用一段时间后,再次做同样的查询操作,又变得和原来一样显示查询结果缓,
      直接在数据库里执行该sql 语句也要125秒以上才能显示结果(该SQL语句是对一个视图的查询
      ,该视图只涉及到两个表,查询出来的结果只有900条记录)
      调整了SQL语句查询条件的位置,可以使查询时间缩短40秒,但是还是没有达到用户的期望值。问题: 1.是否是因为多用户访问应用导致数据库的查询效率降低?
       2.是否可以通过优化SGA和PGA来提高数据库的查询性能?
       3.是否需要升级服务器的内存或其他硬件,再配合优化SGA和PGA来提高数据库的查询性能?
       4.有人建议直接换oracle11G,换了之后能否解决查询数据的性能?
          oracle性能优化

解决方案 »

  1.   

    你说的这些原因都有可能,要给出数据才好分析吧,以下引自itpub的:现象正常,需要对数据库进行优化操作。
    主要是三大部分,一是操作系统一级的,二是数据库一级的,三是SQL一级的。
    先使用一些分析工具,找出瓶颈在什么地方,然后进行有针对性的优化。
    比如说磁盘I/O的竞争,交换,内存,数据库的参数设置,表、索引的碎片,表空间的碎片,具体SQL的执行效率等等,涉及的因素很多。
      

  2.   

    查询条件 建索引。
    -------------------------
    直接在数据库里执行该sql 语句也要125秒以上才能显示结果
    -------------------------------------------
    说明Sql语句本身有问题的。看执行计划,分析出什么地方耗时。