这几天碰到一个头痛的问题,用户那边反映oracle在重新启动时很快,但运行几天下来速度就变得越来越慢,不知道是什么问题?各位有没有碰到相同的现象?
运行环境:hp-lh6000 内存512m,硬盘9G+18G
操作系统:scounix 7.3.4
数据库  :shared pool size 100m
         db_block_buffers*db_block_size=100m
回滚段  :4个,合计100m
数据量  :exp的文件600m
         其中有三个表容量一百多万条记录,别的表不大.
大概就这些了.

解决方案 »

  1.   

    对于百万行的大表的你的配置低了一些
    1。把表分区
    2。或者建议客户升级硬件(买高速SCSI硬盘,做RAID)
      

  2.   

    看一下v$system_event哪些事件比较多
      

  3.   

    增加内存,更换成高速scsi硬盘,shared pool size 可以设置大些。
    硬件若不想更换,只能每隔一段时间进行表空间整理,先将数据库导出再导入。
      

  4.   

    我觉得是你们的应用产生了过多的硬parse,或者data buffer 太小!用statspack  看看
      

  5.   

    statspack
    多半是 share_pool 的问题  看见好多的相似情况都和share_pool 有关
    重新启动时块 一会儿慢  用 alter system flush shared_pool; 会不会快点
      

  6.   

    既然是重新起动速度是快的,而shared_pool已经有100M,应该不是shared_pool的问题。
      

  7.   

    是否是频繁的有数据的插入和删除的数据,如果这样就会引起索引停滞的问题;
    表空间不足;
    ORACLE的后台任务过多
      

  8.   

    同意楼上的意见,如果百万行的表涉及有update操作或者有相关的触发器对其进行操作,速度慢是必然的。
      

  9.   

    在操作过程中肯定是有相关的触发器对其操作,使oracle的后台任务过多。
      

  10.   

    稍总结一下:1、慢的问题是一个很有意思的问题,有些时侯让你无从下手,不过还是有一定的检查步骤的。2、我们应该先确定问题,是什么操作慢(select,update,insert还是其它),对哪个表的的操作慢.3、观注一下操作系统,用sar、vmstat等一些工具观注一下cpu、内存的繁忙程序,哪个进程占的资源大,然后看一下这个进程执行的要sql,分析一下sql看其写的是否合理。4、大于大表,分区是很必要的,况且你的配置又不是很高。5、在库中我们应该观注一下v$session_wait这个视图,它能体现出一些直的原因,可以用如下的语句看哪种等待事件多。
      select * from v$session_wait where event not like '%SQL%';
      

  11.   

    配置低了
    合计100M少了,照你的数据量,怎么也得4个100M啊(恐怕也少了)
    硬盘9 + 18 ,估计没有raid吧,性能差了
    hp-lh6000,如果我没记错的话,cpu应该是2 x 至强550MHz 吧,比P4慢多啦,不过CPU不是主要问题,还是硬盘和内存,还有回滚段。
      

  12.   

    1,硬盘作raid速度会比原来一块硬盘慢,随意没有raid不是性能差,而是安全性差。
    2,SHARED_POOL_SIZE 已经够大了,可以减小到40m看看,100m有些大,你的内存有1G吗?
    3,数据才百万,你的系统足够了,肯定不是硬件问题。
    楼上很多建议不错,查出原因才好解决。
      

  13.   

    可从如下两个方面寻找解决途径:
    1、sql语句,在某个客户端打开sql plus,分别执行insert、update、delete和select(加条件和不加任何条件)如果发现执行insert、update、delete时,速度明显慢,则需要仔细察看索引、视图、触发器等是否合理,不合理的改掉;
    如果发现select语句慢,说明索引或回滚段有问题,或者索引设置不合理,如重复建立索引;或者回滚段太小,并发用户多时,影响了速度。2、调整数据库参数
    shared pool size和db_block_buffers*db_block_size按参考值中的中型或大型去值,参数配置文件中有参考值。
    回滚段多设,如4个100m,再加一个large的,如1024m,oracle会自己管理这些空间的,不会造成浪费的。不必担心。
      

  14.   

    上面分析都有道理。呵呵,这差不多有点像WIN98了关注!