论坛首页 综合技术论坛

教你一招,一分钟解决讨厌的Oracle死锁

浏览 17802 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-28  
--第一步:查看是否有死锁存在,查出有数据则代表有死锁  
select p.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_name  from v$process p,v$session a,v$locked_object b,all_objects   c  
where  p.addr=a.paddr  
and    a.process=b.process  
and    c.object_id=b.object_id


--第二步:查出死锁session的精确信息【sid 为前面语句的session_id】
SELECT sid, serial#, username, osuser FROM v$session where sid='第一步查询出来的session_id';


--第三步:删除死锁【第一个参数为sid,第二个为serial#】
alter system kill session '第一个参数,第二个参数';

一步,两步,三步轻松搞定Oracle数据库死锁,没有了Oracle死锁,好舒服啊...
   发表时间:2011-11-09  
这个...
0 请登录后投票
   发表时间:2011-11-09  
表示、目前不懂~~~!!!
0 请登录后投票
   发表时间:2011-11-09  
这个视乎使用n年,很熟悉了。
0 请登录后投票
   发表时间:2011-11-09  
这个还真没用过、。。。、
0 请登录后投票
   发表时间:2011-11-09  
oracle是不会产生真正的死锁的,死锁只有可能在应用程序中产生
0 请登录后投票
   发表时间:2011-11-10  
1)这是普通锁列表
2)kill session 把链接会话强制结束
跟死锁无关。oracle自动检测死锁,每个死锁在后台都有trace纪录。而且死锁发生后事务就结束,在上边的试视图是看不见的。

lz说得是一般乐观锁的等待状态的检测
0 请登录后投票
   发表时间:2011-11-10  
楼主死锁 不能这样搞。死锁是因为你的应用程序对数据库操作有问题,假如你现在 kill掉了死锁,那么只能解决当时的问题,这个隐藏的死锁还是会一直出现的,劝楼主一定要找到死锁的原因所在,然后解决掉,而不是一味的kill 死锁。。。
0 请登录后投票
   发表时间:2011-11-10  
顶 。楼上
0 请登录后投票
   发表时间:2011-11-10  
chusiyou 写道
楼主死锁 不能这样搞。死锁是因为你的应用程序对数据库操作有问题,假如你现在 kill掉了死锁,那么只能解决当时的问题,这个隐藏的死锁还是会一直出现的,劝楼主一定要找到死锁的原因所在,然后解决掉,而不是一味的kill 死锁。。。



嘿嘿,你说的对,我贴这个帖子只是为了快速的解决数据库的死锁,从而不影响到程序的正常运行,不耽误任工作!
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics