SQL> col name format a30
SQL> select * from (select SAMPLE_TIME,
SESSION_ID,
NAME,
P1,
P2,
P3,
ash.BLOCKING_SESSION
from v$active_session_history ash, v$event_name enm
where ash.event# = enm.event#
and enm.NAME='row cache lock')
where rownum<10; 2 3 4 5 6 7 8 9 10 11
SAMPLE_TIME SESSION_ID NAME P1 P2 P3
BLOCKING_SESSION
--------------------------------------------------------------------------- ---------- ------------------------------ ---------- ---------- ---------- -----
-----------
15-APR-14 07.48.08.840 PM 22 row cache lock 13 0 5
15-APR-14 07.45.49.883 PM 1159 row cache lock 13 0 5
15-APR-14 07.44.12.569 PM 25 row cache lock 13 0 5
ROW CACHE LOCK等待事件是一个共享池相关的等待事件。是由于对于字典缓冲的访问造成的。
P1 – Cache Id
P2 – Mode Held
P3 – Mode Requested
SQL查询
--查询row cache lock等待
select * from v$session_wait where wait_class = 'row cache lock';
--查询rowcache 名称
select * from v$rowcache where cache# = &p1;
DC_SEQUENCES
Check for appropriate caching of sequences for the application requirements.
DC_USERS
Deadlock and resulting “WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!” can occur if a session issues a GRANT to a user, and that user is in the process of
logging on to the database.
DC_SEGMENTS
This is likely to be down to segment allocation. Identify what the session holding the enqueue is doing and use errorstacks to diagnose.
DB_ROLLBACK_SEGMENTS
This is due to rollback segment allocation. Just like dc_segments,identify what is holding the enqueue and also generate errorstacks. Remember that on a
multi-node system (RAC) the holder may be on another node and so multiple systemstates from each node will be required.
DC_AWR_CONTROL
This enqueue is related to control of the Automatic Workload Repository. As such any operation manipulating the repository may hold this so look for
processes blocking these.
SQL> select a.cache#,a.PARAMETER from v$rowcache a where cache# =13;
CACHE# PARAMETER
---------- --------------------------------
13 dc_sequences