暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

rac中查询另外一节点的会话信息并kill掉

原创 张乐奕 2019-07-24
1040

检查被阻塞会话的等待事件

更新语句以后没有响应,明显是被锁住了,那么现在这个会话经历的是什么等待事件呢?

SQL> SELECT sid,event,username,SQL.SQL_text
  2  FROM v$session s,v$SQL SQL
  3  WHERE s.SQL_id=SQL.SQL_id
  4  AND SQL.SQL_text LIKE 'update emp set ename%';
 
       SID EVENT                          USERNAME   SQL_TEXT
---------- ------------------------- --- -------------------------------------------
        79 enq: TX - ROW LOCK contention  ENMOTECH   UPDATE emp SET ename='ENMOTECH' WHERE empno=7369

 

以上使用的是关联v$SQL的SQL语句,实际上通过登录用户名等也可以快速定位被锁住的会话。


得知等待事件是enq: TX – row lock contention,行锁,接下来就是要找到谁锁住了这个会话。在10gR2以后,只需要gv$session视图就可以迅速定位blocker,通过BLOCKING_ INSTANCE和BLOCKING_SESSION字段即可。

SQL> SELECT SID,INST_ID,BLOCKING_INSTANCE,BLOCKING_SESSION FROM gv$session WHERE INST_ID=2 AND SID=79;
       SID    INST_ID BLOCKING_INSTANCE BLOCKING_SESSION
---------- ---------- ----------------- ----------------
        79          2                 1               73

 

上述方法是最简单的,如果是使用更传统的方法,实际上也并不难,从gv$lock视图中去查询即可。

SQL> SELECT TYPE,ID1,ID2,LMODE,REQUEST FROM v$lock WHERE sid=79;
TY        ID1        ID2      LMODE    REQUEST
-- ---------- ---------- ---------- ----------
TX     589854      26267          0          6
AE        100          0          4          0
TM      79621          0          3          0
SQL> SELECT INST_ID,SID,TYPE,LMODE,REQUEST FROM gv$Lock WHERE ID1=589854 AND ID2=26267; 
   INST_ID        SID TY      LMODE    REQUEST
---------- ---------- -- ---------- ----------
         2         79 TX          0          6
         1         73 TX          6          0


已经确认了可以kill掉session之后,需要再找到相应session的serail#,这是kill session时必须输入的参数。

SQL> SELECT SID,SERIAL# FROM gv$session WHERE INST_ID=1 AND SID=73; 
SID    SERIAL#
---------- ----------
73      15625

 

如果是11gR2数据库,那么直接在实例2中加入@1参数就可以杀掉实例1中的会话,如果是10g,那么登入实例1再执行kill session的操作。

SQL> ALTER system KILL SESSION '73,15625,@1';
System altered.

再检查之前被阻塞的更新会话,可以看到已经更新成功了。

SQL> UPDATE emp SET ename='ENMOTECH' WHERE empno=7369;
1 ROW updated.


最后修改时间:2019-07-24 17:07:05
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论