调整共享池 修改shared_pool_size参数即可。

解决方案 »

  1.   

    http://www.eygle.com/index-internal.htm
      

  2.   

    有本书 OCP Oracle9i性能调整学习指南
    讲了好多,去看看
      

  3.   

    调整共享池:调整共享池主要包括三方面:库高速,数据字典缓存,对话信息.
    数据字典缓存中的数据比库高速缓存中的数据在内存中保留的时间要长.所以只要把库高速缓存调整成可以接受的命中率即可.(i)检查,调整库高速缓存可以通过动态性能表v$librarycache来查询从实例启动以来所有库高速缓存的活动情况
    v$librarycache表中以下几列反映了库高速缓存在执行调用阶段的不命中;
    pins,显示在库高速缓存中执行的次数;
    reloads,显示在执行阶段库高速缓存不命中的数目下面的语句可以监视在一段时间内v$librarycache表中的统计select sum(pins) "请求存取数",sum(reloads) "不命中数"
    from v$librarycache输出如下:
    请求存取数    不命中数
    --------------------
    705431         8一般sum(reloads)/sum(pins)的值应接近于零.如果大于1%就应当立即采取措施来减少这种不命中.措施一:增加初始化参数shared_pool_size的值,提高库高速缓存可用的内存数量,增加初始化参数open_cursors的值措施二:写等价的SQL语句,尽可能让SQL语句和PL/SQL块共享一个SQL区,来减少库高速缓存的不命中.(ii)检查,调整数据字典高速缓存在应用已经运行,数据库达到一种相对稳定之后,通过动态性能表v$rowcache来查询数据字典高速缓存的活动
    v$rowcache表中以下几列反映了数据字典高速缓存的活动gets列,显示请求相应项的总数;
    getmisses,显示造成高速缓存不命中的数据请求数.select sum(gets) "请求存取数",sum(getmisses) "不命中数"
    from v$rowcache输出如下:
    请求存取数    不命中数
    --------------------
    52904         855一般来说,数据字典高速缓存总不命中数与总存取数的比也应当接近于0,如果大于10%,应该增加shared_pool_size的值,
    来提高数据字典高速缓存可用的内存数量,减少不命中数.调整缓冲区高速缓存oracle启动后不簖收集和统计数据存取的情况,并将其存放在动态性能表v$sysstat中,表中对调整缓冲区高速缓存有用的为以下几项统计:
    dbblock gets 该统计值为数据请求的总数
    consistent gets 该统计值为通过内存缓冲区存取即能满足的请求数
    physical reads 该统计值为磁盘文件存取的总数下面语句可以监控在一段时间内v$sysstat表中的统计信息
    select name,value 
    from v$sysstat
    where name in ('db block gets','consistent gets','physical reads')输出如下
    name             value
    -------------------------
    db block gets       2631
    consistent gets     325460
    physical reads      2631用以下公式计算缓冲区高速缓存的命中率:
    命中率=1-(physical reads/(db block gets+consistent gets))如果高速缓存大到足以容纳最经常存取的数据,在保持高命中率的前提下,可以通过适当减少初始化参数db_block_buffers的值来减少高速缓存的大小.如果命中率低于70%的话,性能就会造成下降,就应该立即增加db_block_buffers的值(最大值为65535).