oracle 数据表死锁解决方法 Oracle

oracle 数据表死锁解决方法 Oracle 
查询死锁信息的语句: 
  1. select a.owner,  
  2.       a.object_name,  
  3.       b.xidusn,  
  4.       b.xidslot,  
  5.       b.xidsqn,  
  6.       b.session_id,  
  7.       b.oracle_username,  
  8.       b.os_user_name,  
  9.       b.process,  
  10.       b.locked_mode,  
  11.       c.machine,  
  12.       c.status,  
  13.       c.server,  
  14.       c.sid,  
  15.       c.serial#,  
  16.       c.program  
  17.  from all_objects a, v$locked_object b, sys.gv_$session c  
  18. where (a.object_id = b.object_id)  
  19.   and (b.process = c.process)  
  20. order by 12  


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

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

  1. 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     
  2. where  p.addr=a.paddr     
  3. and    a.process=b.process     
  4. and    c.object_id=b.object_id   


第二步:查出死锁session的精确信息【sid 为前面语句的session_id】 

  1. SELECT sid, serial#, username, osuser FROM v$session where sid='第一步查询出来的session_id';  


第三步:删除死锁【第一个参数为sid,第二个为serial#】 

  1. alter system kill session 'sid,serial#';   


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


其中sid用死锁的sid替换。 

  1. 1.exit      
  2. 2.ps -ef|grep spid   


其中spid是这个进程的进程号,kill掉这个Oracle进程。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值