Welcome 微信登录

首页 / 数据库 / MySQL / 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】 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进程。 远程通过监听连接报ORA-01034故障处理一例独立Rails使用Mongoid相关资讯      Oracle基础教程 
  • Oracle块编程返回结果集详解  (11/10/2013 10:45:58)
  • Oracle基础教程之设置系统全局区  (08/22/2013 14:24:00)
  • Oracle基础教程知识点总结  (06/18/2013 07:43:32)
  • Oracle基础教程之tkprof程序详解  (10/22/2013 11:49:50)
  • Oracle基础教程之sqlplus汉字乱码  (07/18/2013 16:30:00)
  • Oracle 管理之 Linux 网络基础  (02/16/2013 18:37:35)
本文评论 查看全部评论 (0)
表情: 姓名: 字数