<pre name="code" class="sql">buffer pool latch 是用来保护buffer pool的
每个buffer pool有一个buffer pool latch保护
SQL> select addr,LATCH#,LEVEL#,CHILD#,NAME from v$latch_children where name='buffer pool';
ADDR LATCH# LEVEL# CHILD# NAME
-------- ---------- ---------- ---------- ----------------------------------------------------------------
2CD760A8 146 1 8 buffer pool
2CD75F78 146 1 7 buffer pool
2CD75E48 146 1 6 buffer pool
2CD75D18 146 1 5 buffer pool
2CD75BE8 146 1 4 buffer pool
2CD75AB8 146 1 3 buffer pool
2CD75988 146 1 2 buffer pool
2CD75858 146 1 1 buffer pool
已选择8行。
cache buffers chains latch是用来保护 hash buckets:
SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
FROM x$ksppi x, x$ksppcv y
WHERE x.inst_id = USERENV('Instance')
AND y.inst_id = USERENV('Instance')
AND x.indx = y.indx
AND x.ksppinm LIKE '%_db_block_hash%' 2 3 4 5 6 ;
NAME VALUE DESCRIB
------------------------------ ---------- ------------------------------
_db_block_hash_buckets 16384 Number of database block hash buckets
_db_block_hash_latches 1024 Number of database block hash Latches
可以用下面查询计算cache buffers chains latch的数量:
SQL> select count(*) from v$latch_children a,v$latchname b where a.latch#=b.latch# and b.name='cache buffers chains';
COUNT(*)
----------
1024
根据我们的查询,那么一个cache buffers chains latch 平均下来要管理
Select 16384/1024 from dual 16个块.