数据库死锁

  • 死锁的解决办法(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. 注解@EnableDiscoveryClient,@EnableEurekaClient的区别

    SpringCLoud中的"Discovery Service"有多种实现,比如:eureka, consul, zookeeper. 1,@EnableDiscoveryClie ...

  2. SSM-Spring-14:Spring中默认自动代理DefaultAdvisorAutoProxyCreator

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 默认自动代理DefaultAdvisorAutoProxyCreator 本处没有什么要讲的,放原代码 ISo ...

  3. 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”

    报错: 解决:在语句开头指定SET NOCOUNT ON 就是这么神cao奇dan. -END-

  4. Spring Cloud实践:降级、限流、滚动、灰度、AB、金丝雀的实现思路

    端口:8888,方便起见直接读取配置文件,生产环境可以读取git.application-dev.properties为全局配置.先启动配置中心,所有服务的配置(包括注册中心的地址)均从配置中心读取. ...

  5. Dubbo源码-Dubbo是如何随心所欲自定义XML标签的

    叨叨 今天考虑了很久要不要写这篇文章. 距离<Dubbo源码>系列的开篇到现在已经快两个月时间了.当时是想着工作上的RPC框架使用存在一些让人头疼的问题,就来看看Dubbo给出了一套什么样 ...

  6. DOM元素的Attribute(特性)和Property(属性) 【转载】

    1.介绍: 上篇js便签笔记http://www.cnblogs.com/wangfupeng1988/p/3626300.html最后提到了dom元素的Attribute和Property,本文简单 ...

  7. valueOf函数详解

    在类型转换中,经常用到方法valueOf()和他toString(),所有对象(包括基本包装类型)都拥有这两个方法.这篇文章我们先看看valueOf()方法.valueOf()方法会将对象转换为基本类 ...

  8. MySQL 8 新特性之降序索引

    MySQL 8.0终于支持降序索引了.其实,从语法上,MySQL 4就支持了,但正如官方文档所言,"they are parsed but ignored",实际创建的还是升序索引 ...

  9. nginx 开启 停止 重启

    Nginx的启动.停止与重启 启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sb ...

  10. SDOI2017 BZOJ 4820 硬币游戏 解题报告

    写在前面 此题网上存在大量题解,但本人太菜了,看了不下10篇均未看懂,只好自己冷静分析了.本文将严格详细地论述算法(避免一切意会和玄学),因此可能会比其它题解更加理论化一些,希望能对像我一样看了其它题 ...