点击上方“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;
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129495.html
摘要:但是,还有一种队列叫优先队列,元素的添加和移除是依赖优先级的。分类优先队列分为两类最小优先队列最大优先队列最小优先队列是把优先级的值最小的元素被放置到队列的最前面代表最高的优先级。那么最小优先队列排序应该为,,,。 一、定义 前面我们学习了栈的实现,队列和栈非常类似,但是使用了不同的原则,而非后进先出。 队列是遵循FIFO(First In First Out,先进先出)原则的一组有序...
队列的定义 队列是遵循先进先出原则的一组有序的项,与栈的不同的是,栈不管是入栈还是出栈操作都是在栈顶操作,队列则是在队尾添加元素,队顶移除,用一个图来表示大概是这样事的:showImg(https://segmentfault.com/img/remote/1460000018133039?w=584&h=294);用一个更形象的例子就是:排队服务,总是先排队的人会先接受服务,当然不考虑插队的情况...
摘要:队列是一种先进先出,的数据结构。队列的另外一项重要操作是读取队头的元素。通常的操作定义一个空队列,无参数,返回值是空队列。删除队列头部的数据项,不需要参数,返回值是被删除的数据,队列本身有变化。 队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。队列用于存储按顺序排列的数据,先进先出,这点和栈不一样,在栈中,最后入栈的元素反而被优先处理。可以将队列想象成在银行前排队的人群...
摘要:队列是遵行先进先出原则的一组有序的项。优先队列是默认队列的变种,它的元素的添加和移除是基于优先级的。如此循环,直至队列的长度等于,返回胜者行。同时,还掌握了很著名的优先队列循环队列这两种结构。 《学习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
阅读 4099·2023-01-11 13:20
阅读 2704·2023-01-11 13:20
阅读 1385·2023-01-11 13:20
阅读 3594·2023-01-11 13:20