--1、造成死锁的语句
select sql_text
from v$sql
where hash_value in
(select sql_hash_value
from v$session
where sid in (select session_id from v$locked_object));
--2 、查找造成死锁的用户、机器名、应用
/*===============================================
sid : 死锁的sessionID
Username:死锁语句所用的数据库用户;
Lockwait:死锁的状态,如果有内容表示被死锁。
Status: 状态,active表示被死锁
Machine: 死锁语句所在的机器。
Program: 产生死锁的语句主要来自哪个应用程序。
==================================================*/
select sid, username, lockwait, status, machine, program
from v$session
where sid in (select session_id from v$locked_object);
--3、查找死锁的进程:
SELECT s.username,
l.OBJECT_ID,
l.SESSION_ID,
s.SERIAL#,
l.ORACLE_USERNAME,
l.OS_USER_NAME,
l.PROCESS
FROM V$LOCKED_OBJECT l, V$SESSION S
WHERE l.SESSION_ID = S.SID;
--4、kill掉这个死锁的进程:
/*============================================
语法:ALTER SYSTEM KILL SESSION 'sid,serial#';
其中 sid=l.session_id
==============================================*/
ALTER SYSTEM KILL SESSION '139,29';