博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 数据库死锁
阅读量:6268 次
发布时间:2019-06-22

本文共 1648 字,大约阅读时间需要 5 分钟。

数据库死锁

  • 死锁的解决办法(1)
    1. 执行下面SQL,先查看哪些表被锁住了:

      select b.owner,b.object_name,a.session_id,a.locked_modefrom v$locked_object a,dba_objects bwhere b.object_id = a.object_id;
    2. 查处引起死锁的会话

      select b.username,b.sid,b.serial#,logon_time from vlocked_object a,vsession bwhere a.session_id = b.sid order by b.logon_time;-- 这里会列出SID
    3. 查出SID和SERIAL#:

      查V$SESSION视图:

      SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID'; -- 这一步将得到PADDR
    4. 查V$PROCESS视图:

      SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR'; -- 这一步得到SPID
    5. 杀死进程

      • 在数据库中,杀掉ORACLE进程:

        ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';
      • 如果在ORACLE中不能杀死进程,我们只能到操作系统中,使用操作系统命令杀死进程

        KILL -9  “刚才查出的SPID”

        在WINDOWS平台,可以是偶那个orakill。

  • 也可以根据对象模糊匹配直接查询死锁的session信息
    SELECT vl.session_id || ',' || b.serial#, ao.object_name, b.*FROM vlocked_object vl, all_objects ao, vsession bWHERE vl.object_id = ao.object_id    AND vl.session_id = b.sid    AND b.status = 'ACTIVE'          --session状态根据需要添加    AND ao.object_name LIKE 'object_name';
    在数据库中,杀掉进程:
    ALTER SYSTEM KILL SESSION '查出的SID, 查出的SERIAL#';
  • 死锁的解决办法(2)
    1. 查询死锁的对象:

      select username,lockwait,status,machine,program from v$session where sid in (select session_id from v$locked_object);
    2. 查询死锁语句:

      select sql_text from v$sql where hash_value in  (select sql_hash_value from v$session where sid in (select session_id from v$locked_object));SELECT s.lockwait,s.status,s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS FROM VLOCKED_OBJECT l,VSESSION S WHERE l.SESSION_ID=S.SID and s.STATUS='ACT\IVE';
      alter system kill session '25,16823' IMMEDIATE;alter system kill session ‘sid,serial#’ IMMEDIATE;

转载于:https://www.cnblogs.com/zhang-zi-yi/p/10792058.html

你可能感兴趣的文章
At.js – 用于 Web 应用程序的自动完成库
查看>>
[Android Pro] Android权限设置android.permission完整列表
查看>>
如何对抗硬件断点--- 调试寄存器
查看>>
mybatis学习
查看>>
从不同层面看cocos2d-x
查看>>
Struts2技术详解
查看>>
MFC应用程序向导生成的文件
查看>>
Oracle体系结构之oracle密码文件管理
查看>>
【leetcode】Remove Element (easy)
查看>>
mysql多表查询及其 group by 组内排序
查看>>
alsa的snd_pcm_readi()函数和snd_pcm_writei()
查看>>
Android学习网站推荐(转)
查看>>
嵌入式根文件系统的移植和制作详解
查看>>
MEF部件的生命周期(PartCreationPolicy)
查看>>
LCD的接口类型详解
查看>>
nginx 基础文档
查看>>
LintCode: Unique Characters
查看>>
Jackson序列化和反序列化Json数据完整示例
查看>>
.net 中的DllImport
查看>>
nyoj 517 最小公倍数 【java睑板】
查看>>