A latch is a low-level internal lock used by Oracle to protect memory structures. Latches are similar to short duration locks that protect critical bits of code. This wait indicates that the process is waiting for a latch that is currently busy (held by another process).
The latch free event is updated when a server process attempts to get a latch, and the latch is unavailable on the first attempt.
The rest of the information in this section is only valid for this metric when it appears in either the Enterprise Manager Grid Control or the Enterprise Manager Database Control (if applicable).
The following table shows how often the metric's value is collected and compared against the default thresholds. The 'Consecutive Number of Occurrences Preceding Notification' column indicates the consecutive number of times the comparison against thresholds should hold TRUE before an alert is generated.
Target Version |
Evaluation and Collection Frequency |
Upload Frequency |
Operator |
Default Warning Threshold |
Default Critical Threshold |
Consecutive Number of Occurrences Preceding Notification |
Alert Text |
pre-10g |
Every Minute |
After Every Sample |
> |
20 |
Not Defined |
3 |
%value%%% of service time is spent waiting on the 'latch free' event. |
(DeltaLatchFreeTime/DeltaServiceTime)*100 where:
DeltaLatchFreeTime: difference of 'sum of time waited for sessions of foreground processes on the 'latch free' event, or any other 'latch:' event' between sample end and start
DeltaServiceTime: difference of 'sum of time waited for sessions of foreground processes on events not in IdleEvents + sum of 'CPU used when call started' for sessions of foreground processes' between sample end and start
See Idle Events
Determine which latch is causing the highest amount of contention.
To find the problem latches since database startup, run the following query:
SELECT n.name, l.sleeps FROM v$latch l, v$latchname n WHERE n.latch#=l.latch# and l.sleeps > 0 order by l.sleeps ;
To see latches that are currently a problem on the database run:
SELECT n.name, SUM(w.p3) Sleeps FROM V$SESSION_WAIT w, V$LATCHNAME n WHERE w.event = `latch free' AND w.p2 = n.latch# GROUP BY n.name;
Take action based on the latch with the highest number of sleeps.
Related Topics
About Alerts
About the Metric Detail Page
Editing Thresholds
Understanding Line Charts
Latch: library cache (%)
Cache Buffer Chains
Redo Copy Latch
Copyright © 1996, 2009, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.