日期:2014-05-16  浏览次数:20545 次

oracle死锁检查方法
用dba登陆
sqlplus /nolog
conn / as sysdba;
select username,lockwait,status,machine,program from v$session where sid in
 (select session_id from v$locked_object)
 如果有输出的结果,则说明有死锁,且能看到死锁的机器是哪一台。字段说明:
 Username:死锁语句所用的数据库用户;
 Lockwait:死锁的状态,如果有内容表示被死锁。
 Status: 状态,active表示被死锁
 Machine: 死锁语句所在的机器。
 Program: 产生死锁的语句主要来自哪个应用程序。


查询死锁的语句
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))

查询死锁进程
引用

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


最简单的方法
SELECT  l.SESSION_ID,s.SERIAL#  FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID 
查询结果 174,27805 
杀死进程:alter system kill session ‘sid,serial#’; (其中sid=l.session_id) 
alter system kill session '174,27085';