oracle中查看死锁

1)用dba用户执行以下语句
SELECT substr(v$lock.sid,1,4) "SID", --ssession_id
       substr(username,1,12) "UserName", --Username:死锁语句所用的数据库用户;
       substr(object_name,1,25) "ObjectName",--ObjectName:死锁对应的表;
       v$lock.type "LockType",
       decode(rtrim(substr(lmode,1,4)),
       '2','Row-S (SS)','3','Row-X (SX)',
       '4','Share',     '5','S/Row-X (SSX)',
       '6','Exclusive', 'Other' ) "LockMode",
       substr(v$session.program,1,25) "ProgramName"
FROM V$LOCK,SYS.DBA_OBJECTS,V$SESSION
WHERE (OBJECT_ID = v$lock.id1
      AND v$lock.sid = v$session.sid
      AND username IS NOT NULL
      AND username NOT IN ('SYS','SYSTEM')
      AND SERIAL# != 1);
2)死锁的解决方法
select 'alter system kill session ',''''||trim(t2.sid)||','||trim(t2.serial#)||''';'
from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time;
  kill掉这个死锁的进程: 

alter system kill session ‘sid,serial#’; (其中sid=l.session_id)

你可能感兴趣的:(oracle)