查看锁冲突

来源:互联网 发布:python怎么开发网站 编辑:程序博客网 时间:2024/05/29 04:39
查看锁冲突的sid和serial#。
col object_name for a30
col machine for a20
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects ,v$session s
where l.object_id o.object_id and l.session_id=s.sid;
  object_name machine  sid  serial#
          test64   145   21218
          test64  138    5717
 
 
根据sid查该sql语句,和session状态等。
SELECT a.username,
a.machine,
a.program,
a.sid,
a.serial#,
a.status,
c.piece,
c.sql_text
FROM v$session a,
v$sqltext c
WHERE a.sid 145
and a.sql_address=c.address(+)
ORDER BY c.piece

 

  USERNAME MACHINE PROGRAM                    SID SERIAL# STATUS PIECE SQL_TEXT
SCOTT    test64  sqlplus@test64 (TNS V1-V3) 145 21218  ACTIVE      delete from a

 

    USERNAME MACHINE PROGRAM                    SID SERIAL# STATUS PIECE SQL_TEXT
  SCOTT    test64  sqlplus@test64 (TNS V1-V3) 138 5717   INACTIVE  

 

测试时发现,status为inactive的正是需要kill掉的进程。因为他没有commit或rollback解除锁。

 

 

 


alter system kill session 'sid,serial#';

alter system kill session '138,5717';           执行后,138,5717的进程就被kill掉,数据进行了rollback。

 

===========================================================================

 

查出自己的sid

 

查看当前session sid
SELECT sid, serial#
FROM v$session
WHERE audsid = sys_Context('USERENV', 'SESSIONID');
或者
select sys_context('userenv', 'sid') from dual