如何快速查出 oracle 数据库中的锁等待

 我来答
badkano
推荐于2018-03-28 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885371
团长

向TA提问 私信TA
展开全部

用如下语句:

select a.username, a.sid, a.serial#, b.id1
  from v$session a, v$lock b
 where a.lockwait = b.kaddr;

如果存在锁等待,查询后有结果,反之则无结果:

突然袭击HH
推荐于2016-03-11 · TA获得超过422个赞
知道小有建树答主
回答量:553
采纳率:0%
帮助的人:331万
展开全部
被锁定的数据库表及相关的sid、serial#及spid
select object_name as 对象名称,s.sid,s.serial#,p.spid as 系统进程号
from v$locked_object l , dba_objects o , v$session s , v$process p
where l.object_id=o.object_id and l.session_id=s.sid and s.paddr=p.addr;

--锁检查
select /*+ rule */
lpad('--', decode(b.block, 1, 0, 4)) || s.username user_name,
b.type,
o.owner || '.' || o.object_name object_name,
s.sid,
s.serial#,
decode(b.request, 0, 'BLOCKED', 'Waiting') status,
t.SQL_TEXT
from dba_objects o,
v$session s,
v$lock v,
v$lock b,
v$sqltext_with_newlines t
where v.id1 = o.object_id
and v.sid = s.sid
and v.sid = b.sid
and (b.block = 1 or b.request > 0)
and v.type = 'TM'
and t.ADDRESS = s.PREV_SQL_ADDR
order by status,s.sid;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式