
一般来说,库高速缓存总不命中数与总存取数之比应当接近零,本例为0.001%,说明库高速缓存命中率很高,该比率假如接近或大于1%,就应当立即采取措施来减少这种不命中。
措施一:增加初始化参数shared_pool_size的值,提高库高速缓存可用的内存数量,同时为了取得好的效果,可能还要增加初始化参数open_cursors的值,以提高对话答应的光标数。需要注重的是:为库高速缓存分配了太多的内存可能引起调页或交换。
措施二:写等价的SQL语句,尽可能让SQL语句和PL/SQL块共享一个SQL区,来减少库高速缓存的不命中。这是应用设计人员应该做到的:SQL语句或PL/SQL块的文本必须每一个字符都等价,包括大小写和空格。
检查、调整数据字典高速缓存 在应用已经运行,数据库达到了一种相对“稳定的状态”之后,可以通过动态性能表V$ROWCACHE来查询数据字典高速缓存的活动。
V$ROWCACHE表中以下几列反映了数据字典高速缓存的使用和有效性:
GETS列,它的值显示请求相应项的总数。
GETMISSES列,它的值显示造成高速缓存不命中的数据请求数。

一般来说,数据字典高速缓存总不命中数与总存取数之比应当接近零,本例为1.616%,说明数据字典高速缓存命中率比较高,该比率假如大于10%,甚至在应用过程中该比率还在增长时,就应当立即通过增加初始化参数shared_pool_size的值,来提高数据字典高速缓存可用的内存数量,从而减少这种不命中。
检查、调整对话信息占用共享池的大小 多线程服务器答应进程共享内存和连接,能支持大量用户同时访问数据库。使用多线程服务器结构时,需要将共享池分得大一些以容纳对话信息。可以通过动态性能表V$SESSTAT来查询Oracle收集对话信息使用的总内存统计。
V$SESSTAT表中session memory列,显示分配给对话的内存字节数。
max session memory列,显示分配给对话的最大内存数。

第二个结果比第一个结果大,但第一个结果能更好地估计共享内存应该多大,除非所有对话几乎在同一时间都达到最大分配。假如共享池不够,可以通过增加初始化参数shares_pool_size的值来增加。本例中共享池的大小为52428800,容纳对话信息绰绰有余。
调整缓冲区高速缓存
Oracle启动后不断收集和统计数据存取的情况,并将其存放在动态性能表V$SYSSTAT中。表中对调整缓冲区高速缓存有用的为以下几项统计:
评论加载中…
![]() |