oracle查看死锁和处理方法

     在操作数据库中经常会遇到表死锁问题,特别是不良的数据库设计和操作的时候,更容易遇到死锁问题。今天在系统中往oracle中添加数据时,特意快速多点几次添加的时候,就出现了死锁问题,而且刚好在读取和更新表的主键值时出现死锁。今天先不谈如何设计不出现死锁问题,只是记录一下如何通过sql语句查找和解决死锁问题。

      查看被锁住的表

 

select b.owner,b.object_name,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id

      查看被锁住的时间

 

 

select b.username,b.sid,b.serial#,logon_time
from v$locked_object a,v$session b
where a.session_id = b.sid order by b.logon_time


      查询死锁的sql语句

 

 

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 username,lockwait,status,machine,program from v$session where sid in
(select session_id from v$locked_object)

       处理掉死锁的进程

 

 

alter system kill session ‘sid,serial#’;


 

posted @ 2013-09-05 20:40  wala-wo  阅读(1773)  评论(0编辑  收藏  举报