检查Oracle的锁状态并清除问题会话

当多个会话想同时访问一行数据,就有可能发生锁的争用。

查询会话锁定状态:


点击(此处)折叠或打开

  1. select /*+ ordered */ username, v$lock.sid, trunc(id1/power(2,16)) rbs,
  2. bitand(id1,to_number('ffff','xxxx'))+0 slot,
  3. id2 seq, lmode, request
  4. from v$lock, v$session
  5. where v$lock.type = 'TX'
  6. and v$lock.sid = v$session.sid;

USERNAME          SID        RBS       SLOT        SEQ      LMODE    REQUEST
---------- ---------- ---------- ---------- ---------- ---------- ----------
SCOTT             146          4         47      21557          0          6
SCOTT             150          4         47      21557          6          0
SCOTT             161          4         47      21557          0          6

LMODE表示当前获得的锁,REQUEST表示想要获得的锁。
  • 0 - none

  • 1 - null (NULL)

  • 2 - row-S (SS)

  • 3 - row-X (SX)

  • 4 - share (S)

  • 5 - S/Row-X (SSX)

  • 6 - exclusive (X)

从以上结果可以看出,会话150获得了锁,会话146和161进入等待。也可以查看以下视图获得结果:


点击(此处)折叠或打开

  1. SELECT sid, blocking_session, username, blocking_session_status
  2. FROM v$session
  3. WHERE username='SCOTT'
  4. ORDER BY blocking_session;

SID BLOCKING_SESSION USERNAME   BLOCKING_SESSION_STATUS
---------- ---------------- ---------- -----------------------
146              150 SCOTT      VALID
161              150 SCOTT      VALID
150                  SCOTT      NO HOLDER

VALID            被BLOCK
NO HOLDER    没有被BLOCK


如果要关闭会话:


点击(此处)折叠或打开

  1. alter system kill session '11,18';
单引号中分别是,'SID, SERIAL#',这两个都是V$SESSION中的列。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22621861/viewspace-1284497/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22621861/viewspace-1284497/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值