首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

oracle 数据表死锁解决办法

2012-07-15 
oracle 数据表死锁解决方法查询死锁信息的语句: select a.owner,a.object_name,b.xidusn,b.xidslot,b.xids

oracle 数据表死锁解决方法
查询死锁信息的语句:

 select a.owner,       a.object_name,       b.xidusn,       b.xidslot,       b.xidsqn,       b.session_id,       b.oracle_username,       b.os_user_name,       b.process,       b.locked_mode,       c.machine,       c.status,       c.server,       c.sid,       c.serial#,       c.program  from all_objects a, v$locked_object b, sys.gv_$session c where (a.object_id = b.object_id)   and (b.process = c.process) order by 1, 2


---------------------------------------------

第一步:查看是否有死锁存在,查出有数据则代表有死锁:

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 'sid,serial#'; 


如果还不能解决,
select pro.spid from v$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr;


其中sid用死锁的sid替换。

1.exit    2.ps -ef|grep spid 


其中spid是这个进程的进程号,kill掉这个Oracle进程。

热点排行