latch free检查

简介: 转自 http://hi.baidu.com/szkking/blog/item/65c5070786d5f77c03088173.html   1.
转自
 
1.找到等待latch free的session的session id(sid)
select sid,event,p1,p1raw from vsessionwait;2.sessionid,session,sql:SELECTSQLTEXTFROMVSQL SQL, VSESSION S     WHERE SQL.HASH_VALUE = S.SQL_HASH_VALUE     AND    SQL.ADDRESS = S.SQL_ADDRESS     AND    S.SID = &sid ;          3.再根据该session id,查看该session的等待状况.     在会话级,查询视图VSESSION_WAIT时如果有该事件存在,那么该视图中的
P1-表示Latch地址,也就是进程正在等待的latch地址。
P2-表示Latch编号,对应于视图VLATCHNAME中的latch#。     P3-表示为了获得该latch而尝试的次数。     sql为:     SELECT SID, EVENT, P1TEXT, P1RAW, P2TEXT, P2, SECONDS_IN_WAIT      FROM VSESSION_WAIT
WHERE SID = &sid ;

4.如果event为latch free,则根据P2的值,查询具体的latch free类型,sql为:
SELECT LATCH#, NAME
FROM VLATCH      WHERE LATCH# = :P2 ;          5.查看系统当前最多的LATCH FREE是哪种     SELECT latch#, name, gets, misses, sleeps     FROM   vlatch
WHERE sleeps>0
ORDER BY sleeps;

6.如果较多的LATCH FREE种类,和4中查询的符合,则根据P2,查询这个LATCH存在的子LATCH及其对应的类型
SELECT addr, latch#, gets, misses, sleeps
FROM   vlatch_children      WHERE sleeps>0             AND    latch# = 98      ORDER BY sleeps desc ;          7.接着查询sleep较多的子LATCH都对应有哪些对象     select distinct a.owner,a.segment_name,a.segment_type      from   dba_extents a,              ( select dbarfil,dbablk                from   xbh
           where hladdr in ( select addr
                              from   ( select addr
                                       from   vlatchchildrenorderbysleepsdesc)whererownum))bwherea.RELATIVEFNO=b.dbarfilanda.BLOCKIDanda.blockid+a.blocks>b.dbablk;8.,SQL,,/,,OLTP,(SESSIONALLOCATION/PROCESSALLOCATION)LATCHFREE.9.:vlatchholder和vlock,.SELECTSID,TYPE,ID1,ID2,LMODE,REQUEST,CTIME,BLOCKFROMVLOCK
WHERE SID > 8 ;

SELECT *
FROM   V$LATCHHOLDER ;
目录
打赏
0
0
0
0
91
分享
相关文章
gdb调试之---当update时第一个持有的Latch是什么Latch锁?
Latch是管理内存结构的锁,非常底层,作机制很简单,执行效率很高,我们要去跟踪调试latch的行为用一般的手段很难捕获到它的过程,GDB是不错的选择。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等