查看 buffer cache 命中率

1. 块缓存即数据高速缓冲区。它是SGA区的一个主要部分。用于存放从数据文件读入的数据块。它的大小有INITsid.ORA文件的DB_BLOCK_BUFFERS参数来设置(Oracle9i参数名称为DB_CACHE_SIZE)。这个区内容再分为:

l Dirty Buffers 已经改变但还没有存盘的缓冲区。l Pinned Buffers 当前正在访问的缓冲区。l Free Buffers 当前尚未使用的缓冲区。

 

2.数据高速缓冲区也有命中率的问题。如果需要的数据能在数据高速缓冲区中找到。就叫命中。下面语句查询命中率相关几个参数值的信息。

官网的:

DB block gets:the number of accesses to the current image of a block
Consistent gets:the number of accesses to a read-consistent image of a block
Physical reads:the number of blocks read from disk

 

命中率计算公式

Hit Radio=1-physical reads/(db block gets+consistent gets)

 

 SQL> select name,value from v$sysstat where name in('db block gets','consistent gets','physical reads');

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
db block gets                                                           932
consistent gets                                                       50535
physical reads                                                         9145

 

SQL> select (1-9145/(50535+932)) from dual;

(1-9145/(50535+932))
--------------------
          .822313327
SQL> show parameter db_block_buffers

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_block_buffers                     integer     0

由于10G中引入了SGA自动管理,所以show parameter 查出来的db_block_buffers为 0

查看当前buffer cache size

SQL> select name ,bytes/1024/1024 Mb from v$sgainfo where name ='Buffer Cache Size';

NAME                                     MB
-------------------------------- ----------
Buffer Cache Size                       288    这个buffer cache size 指的是 default + keep +recycle 的和

SQL> select current_size from v$buffer_pool;

CURRENT_SIZE
------------
         288         这里 我没有配置 keep pool ,也没有配置 recycle pool

如果一个长期运行的database 长期的 Hit Radio<90%,那么就应该考虑多分配点内存给buffer cache ,同时增加物理内存,或者SQL调优

理想的hit radio 应该在 95%以上

你可能感兴趣的:(查看 buffer cache 命中率)