oracle會話阻塞查詢指令碼及對應欄位含義

regonly1發表於2016-06-08
這是一個簡單直接的觀察被阻塞的會話的指令碼:
with vw_lock AS (SELECT * FROM v$lock)

select
a.sid,
'is blocking',
(select 'sid:'||s.sid||' object:'||do.object_name||' rowid:'||
    dbms_rowid.rowid_create ( 1, ROW_WAIT_OBJ#, ROW_WAIT_FILE#, ROW_WAIT_BLOCK#, ROW_WAIT_ROW# )
    ||' sql_id:'||s.sql_id
   from v$session s, dba_objects do
    where s.sid=b.sid
    and s.ROW_WAIT_OBJ# = do.OBJECT_ID
) blockee,
b.sid,b.id1,b.id2
from vw_lock a, vw_lock b
where a.block = 1
and b.request > 0
and a.id1 = b.id1
and a.id2 = b.id2

輸出的欄位為:
sid: 持有鎖的session id
blockee:被阻塞的session資訊。包括session id、object name、rowid及sql_id。可根據該sql_id找出對應的sql語句。
sid:被阻塞的session id。
id1、id2含義:

TYPE

ID1

ID2

TM

被修改表的標識(object_id

0

TX

以十進位制數值表示該事務所佔用的回滾段號與該事務在該回滾段的事務表(Transaction table)中所佔用的槽號(slot number,可理解為記錄號)。其組成形式為: 0xRRRRSSSS ( RRRR = RBS number, SSSS = slot )

以十進位制數值表示環繞(wrap)次數,即該槽(slot)被重用的次數;


 




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-2117500/,如需轉載,請註明出處,否則將追究法律責任。

相關文章