ITPub博客

首页 > 数据库 > Oracle > Oracle:杀死死锁进程

Oracle:杀死死锁进程

Oracle 作者:xiaoyan5686670 时间:2015-12-31 18:34:39 0 删除 编辑

http://www.cnblogs.com/wenlong/archive/2011/10/28/2227889.html

1. 模拟死锁现象

利用PL/SQL Developer工具可以很容易模拟死锁现象。用同一个数据库的同一个用户登录2个PL/SQL Developer。

首先,在其中一个PL/SQL Developer随便对数据库的表执行一个更新操作,不要提交,状态为“待提交”

然后,在另一个PL/SQL Developer执行同样的操作,此时这个操作会等待前面的事务提交之后才会执行,状态为“等待”

对同一条记录进行更新操作就会造成行死锁现象,而对于不同的记录进行更新操作是不会造成死锁现象的。因为Oracle的锁机制力度比较细,实现了行级锁机制。

2. 处理死锁进程

2.1. 查看被锁住的表

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;

2.2. 查看锁住表的用户

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;

2.3. 处理死锁进程

alter system kill session 'SID,SERIAL#';

如果有ora-00031错误,则在后面加immediate

alter system kill session ' SID,SERIAL#' immediate;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22569416/viewspace-1969324/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 执行sqltuning
请登录后发表评论 登录
全部评论

注册时间:2012-07-25

  • 博文量
    108
  • 访问量
    276163