数据库死锁

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

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

      select b.username,b.sid,b.serial#,logon_time
      from vlocked_object a,vsession b
      where 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 b
    WHERE 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;

MySQL 数据库死锁的更多相关文章

  1. mysql数据库死锁的产生原因及解决办法

    这篇文章主要介绍了mysql数据库锁的产生原因及解决办法,需要的朋友可以参考下   数据库和操作系统一样,是一个多用户使用的共享资源.当多个用户并发地存取数据 时,在数据库中就会产生多个事务同时存取同 ...

  2. MySQL数据库死锁分析

    背景说明: 公司内部一套自建分布式交易服务平台,在POC稳定性压力测试的时候出现了数据库死锁.(InnoDB引擎)由于保密性,假设是app_test表死锁了. 现象: 发生异常:Deadlock fo ...

  3. 记一次线上MySQL数据库死锁问题

            最近线上项目报了一个MySQL死锁(DealLock)错误,虽说对业务上是没有什么影响的,由于自己对数据库锁这块了解不是很多,之前也没怎么的在线上碰到过.这次刚好遇到了,便在此记录一下 ...

  4. Mysql数据库死锁分析相关概念

    参考博客: mysql死锁问题分析(https://www.cnblogs.com/LBSer/p/5183300.html) mysql insert锁机制(http://yeshaoting.cn ...

  5. 关于在项目中遇到MySQL数据库死锁的问题

    在MySQL中, 当一个事务去更新某条数据, 还没有提交的时候, 第二个事务去更新该数据, 则会出现等待获取锁超时异常: >> Lock wait timeout exceeded; tr ...

  6. mysql数据库死锁的解决方案

    1. 查询锁表信息    show OPEN TABLES where In_use > 0;2. 查看当前数据库锁表的情况    SELECT * FROM information_schem ...

  7. Mybatis-update - 数据库死锁 - 获取数据库连接池等待

    最近学习测试mybatis,单个增删改查都没问题,最后使用mvn test的时候发现了几个问题: update失败,原因是数据库死锁 select等待,原因是connection连接池被用光了,需要等 ...

  8. MySQL 性能优化-数据库死锁监控

    MySQL性能优化-数据库死锁监控 by:授客 QQ:1033553122 1)表锁定 通过检查 table_locks_waited 和 table_locks_immediate 状态变量来分析表 ...

  9. 一个项目中mysql数据库经常死锁的问题解决记录

    1.问题描述 此项目为一个物流系统,需要使用PDA对货物进行入库.备货.出货等操作,在系统开发测试过程中,经常发现死锁问题. 有这样一种业务场景:仓库对备货单上货进行扫码备货后,点击"完成& ...

随机推荐

  1. CentOS6.7 mysql5.6.33修改数据文件位置

    问题:mysql存放的数据文件,分区容量较小,目前已经满,导致mysql连接不上, 解决方案: 1.删除分区里一个不需要用的数据,如:日志文件等(解决不了根本问题) 2.对某个磁盘扩容 3.修改数据存 ...

  2. html和js,外部js 的下载执行顺序

    当用户开始访问,首先下载html资源和外部js资源,在chrome中显示的是html先下载,然后下载外部js,外部js的下载顺序安引用顺序,但是下载到达情况则视情况而定,接着才是图片和其他资源,但是要 ...

  3. 你不知道的JavaScript--Item15 prototype原型和原型链详解

    用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...

  4. ECMAScript简介以及es6新增语法

    ECMAScript简介 ECMAScript与JavaScript的关系 ECMAScript是JavaScript语言的国际化标准,JavaScript是ECMAScript的实现.(前者是后者的 ...

  5. 跟我学ASP.NET MVC之六:SportsStrore添加产品目录导航

    摘要: 上一篇文章,我建立了SportsStore应用程序的核心架构.现在我将使用这个架构向这个应用程序添加功能,你将开始看到这个基础架构的作用.我将添加重要的面向客户的简单功能,在这个过程中,你将看 ...

  6. 安装Navicat for MySQL

    注: 以下内容引自 https://www.cnblogs.com/da19951208/p/6403607.html Navicat for MySQL下载.安装与破解   一:下载Navicat ...

  7. win 上安装cad2002的心得

    前不久,一从事测绘的哥们来找我,要我给她装一专业软件,想想应该很简单,不知为何把他难成这样,他极力要求安装xp系统,说是只有xp上才能装成功,我不信这个邪,查了许多资料发现win 7根本不兼容cad2 ...

  8. 关于top命令的使用

    在服务器运维过程中,我们有时需要知道当前状态下的系统运行性能,该如何获取呢?今天,咱们聊一下关于top这个小命令的一些知识. top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资 ...

  9. Mac下将文件复制到移动硬盘

    在Mac下将移动硬盘格式化成exfat,这样Mac和Windows都可以对移动硬盘进行识别

  10. token.go

    package sego // 字串类型,可以用来表达 //    1. 一个字元,比如"中"又如"国", 英文的一个字元是一个词 //    2. 一个分词, ...