點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!??!
Enqueue(隊列)是一種共享內存結構,用于串行訪問數據庫資源,關聯一個會話或事務,它是Oracle訪問數據庫對象的lock,每個試圖鎖住資源的會話,將會獲得這個資源的Enqueue。
CF(Controlfile Enqueue)
DX (Distributed Transaction Enqueue)
FB (Block Format Enqueue)
HW( High Water Enqueue)
JS (Job Scheduler Enqueue)
RO (Fast Object Reuse Enqueue)
SQ( Sequence Cache Enqueue)
ST( Space Transaction Enqueue)
TO( Temporary Table Object Enqueue)
TT (Tablespace Operations Enqueue)
US( Undo Segment Enqueue)等等
LOCK: TX "Transaction Enqueue".
enq: TX - contention
enq: TX - row lock contention
enq: TX - allocate ITL entry
enq: TX - index contention
update u1.test1 set name=MM where id=5
update u1.test1 set name=zz where id=5
SELECT sid,type,id1,id2,lmode,request FROM v$lock WHERE type=TX;
SID TYPE ID1 ID2 LMODE REQUEST
52 TX 524288 13106 6 0
59 TX 524288 13106 0 6
SELECT DECODE(request,0,Holder: ,Waiter: )||sid sess,
id1, id2, lmode, request, type
FROM V$LOCK
WHERE (id1, id2, type) IN
(SELECT id1, id2, type FROM V$LOCK WHERE request>0)
ORDER BY id1, request
SESS ID1 ID2 LMODE REQUEST TYPE
Holder: 52 524288 13106 6 0 TX
Waiter: 59 524288 13106 0 6 TX
SID:52是blocker,正持有該鎖;
SID:59是waiter,等待獲得該鎖.
SELECT DECODE(LV, 1, Holder: || S.SID, Waiter: || S.SID) SESS_STATUS,S.USERNAME,OBJECT_NAME,S.inst_id,S.SID,s.serial#, DECODE(L.LMODE, 0, None, 1, Null, 2, Row-S (SS), 3, Row-X (SX), 4, Share, 5, S/Row-X (SSX), 6, Exclusive, TO_CHAR(L.LMODE)) LOCK_MODE, TRUNC(L.CTIME / 3600) || : || TRUNC(MOD(L.CTIME, 3600) / 60) || : || MOD(L.CTIME, 60) CTIME, S.STATUS, S.MACHINE, S.SQL_ID, Q.SQL_TEXT
FROM (SELECT /*+ NO_MERGE */(3-LEVEL) LV, INST_ID, SID, TYPE, LMODE, CTIME
FROM (SELECT /*+ NO_MERGE */A.INST_ID, A.SID, A.TYPE, A.LMODE, A.REQUEST,
CASE
WHEN REQUEST = 0 THEN ID1
END ID1,
CASE
WHEN REQUEST > 0 THEN ID1
END ID3,
A.CTIME
FROM GV$LOCK A
WHERE A.TYPE <> MR) START WITH REQUEST > 0 CONNECT BY PRIOR ID3 = ID1 ) L,
GV$SESSION S,
GV$PROCESS P,
dba_objects O,
GV$SQL Q
WHERE L.SID = S.SID
AND L.INST_ID = S.INST_ID
AND S.INST_ID = P.INST_ID(+)
AND S.PADDR = P.ADDR(+)
AND S.ROW_WAIT_OBJ# = O.OBJECT_ID(+)
AND S.SQL_ID = Q.SQL_ID(+)
GROUP BY DECODE(LV, 1, Holder: || S.SID, Waiter: || S.SID), S.INST_ID,S.SID,s.serial#, S.USERNAME, O.OBJECT_NAME, L.TYPE, L.LMODE, L.CTIME, S.STATUS, S.MACHINE,S.SQL_ID,Q.SQL_TEXT;
SESS_STATUS USERNAME OBJECT_NAME INST_ID SID SERIAL# LOCK_MODE CTIME STATUS MACHINE SQL_ID SQL_TEXT
Holder: 52 U1 1 52 54450 Exclusive 0:34:15 INACTIVE WORKGROUPDREAM
Waiter: 59 U1 TEST1 1 59 50489 None 0:34:6 ACTIVE WORKGROUPDREAM 2btf137sycbdh update u1.test1 set name=zz where id=5
select decode(request,0,Holder,Waiter) req ,s.inst_id , s.sid, s.serial#,p.spid,s.status, id1, id2, lmode, request, l.type, ctime, s.sql_id, s.event#,s.event,s.last_call_et
from gv$lock l
join gv$session s on l.sid=s.sid and l.inst_id=s.inst_id
join gv$process p on s.paddr=p.addr and p.inst_id=s.inst_id
where (id1, id2, l.type) in
(select id1, id2, type from gv$lock where request>0 )
order by id1, ctime desc, request;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129495.html
摘要:但是,還有一種隊列叫優先隊列,元素的添加和移除是依賴優先級的。分類優先隊列分為兩類最小優先隊列最大優先隊列最小優先隊列是把優先級的值最小的元素被放置到隊列的最前面代表最高的優先級。那么最小優先隊列排序應該為,,,。 一、定義 前面我們學習了棧的實現,隊列和棧非常類似,但是使用了不同的原則,而非后進先出。 隊列是遵循FIFO(First In First Out,先進先出)原則的一組有序...
隊列的定義 隊列是遵循先進先出原則的一組有序的項,與棧的不同的是,棧不管是入棧還是出棧操作都是在棧頂操作,隊列則是在隊尾添加元素,隊頂移除,用一個圖來表示大概是這樣事的:showImg(https://segmentfault.com/img/remote/1460000018133039?w=584&h=294);用一個更形象的例子就是:排隊服務,總是先排隊的人會先接受服務,當然不考慮插隊的情況...
摘要:隊列是一種先進先出,的數據結構。隊列的另外一項重要操作是讀取隊頭的元素。通常的操作定義一個空隊列,無參數,返回值是空隊列。刪除隊列頭部的數據項,不需要參數,返回值是被刪除的數據,隊列本身有變化。 隊列是一種列表,不同的是隊列只能在隊尾插入元素,在隊首刪除元素。隊列用于存儲按順序排列的數據,先進先出,這點和棧不一樣,在棧中,最后入棧的元素反而被優先處理??梢詫㈥犃邢胂蟪稍阢y行前排隊的人群...
摘要:隊列是遵行先進先出原則的一組有序的項。優先隊列是默認隊列的變種,它的元素的添加和移除是基于優先級的。如此循環,直至隊列的長度等于,返回勝者行。同時,還掌握了很著名的優先隊列循環隊列這兩種結構。 《學習JavaScript數據結構與算法》讀書筆記。 隊列是遵行FIFO(First In First Out, 先進先出)原則的一組有序的項。隊列再尾部添加新元素,并從頂部移除元素。 在現實中...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20