high "latch: cache buffers chains" waits in 10.2.0.3 DB

from:http://www.freelists.org/post/oracle-l/high-latch-cache-buffers-chains-waits-in-10203-DB

 

 

  • From : "bkaltofen@xxxxxx" <bkaltofen@xxxxxx>
  • To : Oracle-L <oracle-l@xxxxxxxxxxxxx>
  • Date : Tue, 26 Feb 2008 18:25:02 +0100

 

 

Content-Type: multipart/alternative;
boundary="------------050402000304000607000905"

This is a multi-part message in MIME format.
--------------050402000304000607000905
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 8bit

Hello,

I'm experiencing a problem with a high number of "latch: cache buffers
chains" waits in a customer database.

Environment:
Solaris 10 x86
Oracle EE 10.2.0.3
Application Type: Web-Application which opens a session for each request
(no comment. We have no influence on the application)

Symptoms:
"latch: cache buffers chains" waits go up
number of sessions increases until "max processes" is reached, so no new
connections can be established.
Web-application stops responding, as no more sessions are possible
I can not reproduce the issue by will and there is no test database at
customer side.

Workaround:
- Wait till latch contention is resolved --> Customer is not appy about
that. One time it took over 2 hours
or
- restart instance --> fast workaround, but buffer and library cache are
lost.

I think it has something to do with hot blocks.

select event, count(*) sessions from v$session_wait
where state='WAITING' group by event order by 2 desc;
  2
EVENT                                                                  
    SESSIONS
----------------------------------------------------------------  ----------
latch: cache buffers chains                                        312
read by other session                                                147
SQL*Net message from client                                      69
rdbms ipc message                                                      14
....

Top ten sleeps for latches:

select CHILD#  "cCHILD"
,      ADDR    "sADDR"
,      GETS    "sGETS"
,      MISSES  "sMISSES"
,      SLEEPS  "sSLEEPS"
from v$latch_children
where name = 'cache buffers chains'
and SLEEPS>5
order by 5, 1, 2, 3;

   cCHILD sADDR                 sGETS    sMISSES    sSLEEPS
---------- ---------------- ---------- ---------- ----------
     57645 000000056FE9F7E8      88080       1933       1683
     60748 000000056FF37020     225492       2220       1686
     16968 0000000571A75420      65938       1737       1689
     38058 0000000570EAF120     167974       2065       1731
     40474 0000000570F250A0      61998       2403       1754
     43329 0000000570FB0718     424070       2381       1857
      2177 000000057277A380      53419       2332       1861
      5334 000000057183D310     121589       2306       1865
     21423 0000000571B4EC98      57113       2407       1917
     46775 000000056FC8CBB8     123352       2667       2169

With the following statement we identified one Table that has the most
contention.

select /*+ RULE */
  e.owner ||'.'|| e.segment_name  segment_name,
  e.extent_id  extent#,
  x.dbablk - e.block_id + 1  block#,
  x.tch,
  l.child#
from
  sys.v$latch_children  l,
  sys.x$bh  x,
  sys.dba_extents  e
where
  x.hladdr  = 'sADDR from the result above'
and
  e.file_id = x.file# and
  x.hladdr = l.addr and
  x.dbablk between e.block_id and e.block_id + e.blocks -1
  order by x.tch desc ;

The Table has about 15.000.000 rows and a size of 9 GByte.

Do you have any idea how to work around the latch contention? Our idea
is to move the table to a tablespace without automatic segment space
management as to increase the freelists of the table. Other idea is to
partition the table. But partitioning is not licensed at the monent (so
we can not use it).

Oracle Support suggests DocID: *163424.1 **How To Identify a Hot Block
Within The Database Buffer Cache.
https://metalink.oracle.com/metalink/plsql/f?p=130:14:7971216487423334302::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,163424.1,1,1,1,helvetica
*
Thanks for any suggestion.

Björn

--------------050402000304000607000905
Content-Type: text/html; charset=ISO-8859-15
Content-Transfer-Encoding: 8bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
Hello,<br>
<br>
I'm experiencing a problem with a high number of "latch: cache buffers
chains" waits in a customer database.<br>
<br>
Environment:<br>
Solaris 10 x86<br>
Oracle EE 10.2.0.3<br>
Application Type: Web-Application which opens a session for each
request (no comment. We have no influence on the application)<br>
<br>
Symptoms:<br>
"latch: cache buffers chains" waits go up<br>
number of sessions increases until "max processes" is reached, so no
new connections can be established.<br>
Web-application stops responding, as no more sessions are possible<br>
I can not reproduce the issue by will and there is no test database at
customer side.<br>
<br>
Workaround:<br>
- Wait till latch contention is resolved --&gt; Customer is not appy
about that. One time it took over 2 hours<br>
or<br>
- restart instance --&gt; fast workaround, but buffer and library cache
are lost.<br>
<br>
I think it has something to do with hot blocks.<br>
<br>
select event, count(*) sessions from v$session_wait<br>
where state='WAITING' group by event order by 2 desc;<br>
  2  <br>
EVENT                                                                 
    SESSIONS<br>
----------------------------------------------------------------
----------<br>
latch: cache buffers chains                                        312<br>
read by other session                                                147<br>
SQL*Net message from client                                      69<br>
rdbms ipc message                                                     
14<br>
....<br>
<br>
Top ten sleeps for latches:<br>
<br>
select CHILD#  "cCHILD"<br>
,      ADDR    "sADDR"<br>
,      GETS    "sGETS"<br>
,      MISSES  "sMISSES"<br>
,      SLEEPS  "sSLEEPS" <br>
from v$latch_children <br>
where name = 'cache buffers chains'<br>
and SLEEPS&gt;5<br>
order by 5, 1, 2, 3;<br>
<br>
   cCHILD sADDR                 sGETS    sMISSES    sSLEEPS<br>
---------- ---------------- ---------- ---------- ----------<br>
     57645 000000056FE9F7E8      88080       1933       1683<br>
     60748 000000056FF37020     225492       2220       1686<br>
     16968 0000000571A75420      65938       1737       1689<br>
     38058 0000000570EAF120     167974       2065       1731<br>
     40474 0000000570F250A0      61998       2403       1754<br>
     43329 0000000570FB0718     424070       2381       1857<br>
      2177 000000057277A380      53419       2332       1861<br>
      5334 000000057183D310     121589       2306       1865<br>
     21423 0000000571B4EC98      57113       2407       1917<br>
     46775 000000056FC8CBB8     123352       2667       2169<br>
<br>
With the following statement we identified one Table that has the most
contention.<br>
<br>
select /*+ RULE */<br>
  e.owner ||'.'|| e.segment_name  segment_name,<br>
  e.extent_id  extent#,<br>
  x.dbablk - e.block_id + 1  block#,<br>
  x.tch,<br>
  l.child#<br>
from<br>
  sys.v$latch_children  l,<br>
  sys.x$bh  x,<br>
  sys.dba_extents  e<br>
where<br>
  x.hladdr  = 'sADDR from the result above'<br>
and<br>
  e.file_id = x.file# and<br>
  x.hladdr = l.addr and<br>
  x.dbablk between e.block_id and e.block_id + e.blocks -1<br>
  order by x.tch desc ;<br>
<br>
The Table has about 15.000.000 rows and a size of 9 GByte.<br>
<br>
Do you have any idea how to work around the latch contention? Our idea
is to move the table to a tablespace without automatic segment space
management as to increase the freelists of the table. Other idea is to
partition the table. But partitioning is not licensed at the monent (so
we can not use it).<br>
<br>
Oracle Support suggests DocID: <font face="helvetica"><strong>163424.1
</strong></font><font face="helvetica"><strong>How To Identify a Hot
Block Within The Database Buffer Cache.<br>
<a class="moz-txt-link-freetext"
href="https://metalink.oracle.com/metalink/plsql/f?p=130:14:7971216487423334302::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,163424.1,1,1,1,helvetica";>https://metalink.oracle.com/metalink/plsql/f?p=130:14:7971216487423334302::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,163424.1,1,1,1,helvetica</a><br>
</strong></font><br>
Thanks for any suggestion.<br>
<br>
Björn<br>
</body>
</html>

--------------050402000304000607000905--
--

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值