• 关于数据库死锁的检查方法

    一、        数据库死锁的现象
    程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。


    二、        死锁的原理
    当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提
    交,另一条对于这一列数据做更新操作的语句在执行的时候就会处于等待状态,
    此时的现象是这条语句一直在执行,但一直没有执行成功,也没有报错。

    三、        死锁的定位方法
    通过检查数据库表,能够检查出是哪一条语句被死锁,产生死锁的机器是哪一台。
    1)用dba用户执行以下语句

    select username, lockwait, status, machine, program
      from v$session
    where sid in (select session_id from v$locked_object)

    如果有输出的结果,则说明有死锁,且能看到死锁的机器是哪一台。字段说明:

    Username:死锁语句所用的 数据库用户 ;
    Lockwait:  死锁的 状态 ,如果 有内容表示被死锁 。
    Status:       状态 , active表示被死锁
    Machine:   死锁语句 所在的机器 。
    Program:   产生死锁的语句主要 来自哪个应用程序 。

    2)用dba用户执行以下语句,可以查看到被死锁的语句。

    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))

    四、        死锁的解决方法
        一般情况下,只要将产生死锁的语句提交就可以了,但是在实际的执行过程中。用户可
    能不知道产生死锁的语句是哪一句。可以将程序关闭并重新启动就可以了。
    经常在Oracle的使用过程中碰到这个问题,所以也总结了一点解决方法。

    1)查找死锁的进程:

    sqlplus "/as sysdba" (sys/change_on_install)
    SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
    l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
    FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;

    2)kill掉这个死锁的进程:

    alter system kill session ‘sid,serial#’; (其中sid=l.session_id)

    3)如果还不能解决:

    select pro.spid from v$session ses,
    v$process pro where ses.sid=XX and
    ses.paddr=pro.addr;

    其中sid用死锁的sid替换:

    exit
    ps -ef|grep spid

    其中spid是这个进程的进程号,kill掉这个Oracle进程。

关于数据库死锁的检查方法相关推荐

  1. 数据库死锁及解决方法

    数据库死锁及解决方法 参考文章: (1)数据库死锁及解决方法 (2)https://www.cnblogs.com/wezheng/p/8366029.html 备忘一下.

  2. 数据库死锁的检查和解决方法

    https://blog.csdn.net/wljliujuan/article/details/79614019 数据库死锁的检查方法 一.         数据库死锁的现象 程序在执行的过程中,点 ...

  3. 解决Sybase数据库死锁的方法

    http://topic.csdn.net/t/20011116/10/373324.html 1 楼killerdanny(堕落的瓦拉斯塔兹)回复于 2001-11-16 10:53:42 得分 2 ...

  4. PostgreSQL 数据库检测到 ShareLock 死锁的处理方法

    PostgreSQL 是一个免费数据库,对于处理分析型+交易型混合型系统来说确实很不错,特别是版本的升级到11.2后性能提升很多,很多运行机制跟Oracle越来越接近,确实很强大,但是开源系统确实存在 ...

  5. 数据库--死锁产生原因及解决方法

    数据库与操作系统一样,是一个多用户使用的共享资源.当多个用户并发地存取数据时,就会产生多个事务同时存取统一数据的情况.如果对并发操作没有相应的控制就可能会导致读取和存储不正确的数据,破坏了数据库的一致 ...

  6. SqlServer数据库死锁排查方法

    1. 开启数据库死锁日志功能 1.1 在SQLSERVER企业管理器里执行下面 a 命令,开启死锁日志 --a. 开启跟踪死锁 DBCC TRACEON(3605,1204,1222,-1) --b. ...

  7. 提高数据库效率的一些方法--eg:大批量循环插入数据的简化

    提高数据库效率的一些方法--eg:大批量循环插入数据的简化 作者及来源: 小奈鲁 - 博客园    收藏到→_→: 摘要: 提高数据库效率的一些方法--eg:大批量循环插入数据的简化 "提高 ...

  8. 数据库死锁分析与解决

    一.死锁的表现 1.错误信息是:事务(进程 ID)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品.请重新运行该事务. 2.错误信息是:事务(进程 ID )与另一个进程被死锁在 锁 | 通信缓 ...

  9. Java面试必问:死锁(多线程死锁+数据库死锁)

    死锁 接下来从几个方面介绍: 多线程死锁 多线程死锁解决办法 数据库死锁 数据库死锁解决办法 多线程死锁是怎么造成的? 多线程锁定同一资源会造成死锁 线程池中的任务使用当前线程池也可能出现死锁 参考连 ...

  10. oracle数据表造成死锁,解决方法

    一.死锁的表现 1.错误信息是:事务(进程 ID)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品.请重新运行该事务. 2.错误信息是:事务(进程 ID )与另一个进程被死锁在 锁 | 通信缓 ...

最新文章

  1. Android模拟自定义浏览器和打开另一个Ativity(06)
  2. ASP.NET MVC 从后台获取的字符串转换成HTML标签
  3. 爆发前的最后按钮 白鹭推HTML5首款生态产品Egret Runtime
  4. 传阿里旗下蚂蚁集团拟上市集资300亿美元,最快9月IPO
  5. 使用goJenkins create job 返回500
  6. mysql数据库 常用函数_《MySQL数据库》常用函数整理
  7. ASP.NET Core - 关于标签帮助器值得了解的五点
  8. 冠状病毒过后世界九大未来预测
  9. 【BZOJ3489】A simple rmq problem(树套树)
  10. jqgrid 横向滚动条
  11. 全国python工程师有多少_2019年Python工程师的平均薪资是多少?
  12. 不懂技术的小白,使用电商网站建设工具有什么注意事项?
  13. R 语言详细安装教程(保姆级)及 RStudio简易安装教程
  14. 大华工业相机SDK【QT+ C++】vs2015配置环境
  15. ubuntu如何更改IP地址
  16. 小程序上传图片加水印
  17. 国家对五险一金的交纳说明(已更新)
  18. 1117: 零起点学算法24——求正弦和余弦
  19. 使用sh_metutil生成采样300秒的ztd
  20. NFT市场可二开开源系统

热门文章

  1. python用小矩形标记数据点_Python – 在散点处绘制已知大小的矩形
  2. 【数字图像处理系列四】图像数据集增强方式总结和实现
  3. 矩阵分析(三):矩阵的列空间、行空间与零空间
  4. Android事件处理
  5. 如何理解Beta分布和Dirichlet分布?
  6. DL实战(1):tensorflow在mnist上实现siamese net
  7. 随机变量的原点矩、中心距、变异系数
  8. Hadamard 分数阶微分/积分定义
  9. LeetCode-两数之和(Java) 记录下刷题的第一天以及近期迷茫感受
  10. Linux拷贝分区内容,dd复制分区后目标分区的大小变成原分区了