首页 > 数据库 >Oracle死锁解决方式

Oracle死锁解决方式

时间:2024-07-07 16:31:36浏览次数:19  
标签:OBJECT 解决 死锁 SESSION SID Oracle SERIAL vsession

死锁是指在Oracle数据库中,两个或多个事务相互等待对方持有的锁资源,导致它们无法继续执行下去,从而形成死锁现象

解决方式如下:

  1. 查询死锁信息:
    1. select SID,USERNAME,LOCKWAIT,STATUS,MACHINE,PROGRAM,EVENT from V$SESSION where SID in (select SESSION_ID from V$LOCKED_OBJECT);
  2. 查看到被死锁的语句:

    1. select SID,SERIAL#,SQL_TEXT from V$SQL vsql, V$SESSION vsession, V$LOCKED_OBJECT lockedObject where HASH_VALUE = SQL_HASH_VALUE and SID = SESSION_ID;
  3. 查看被锁的表

    1. select objects.OWNER,objects.OBJECT_NAME,lockedObject.SESSION_ID,lockedObject.LOCKED_MODE 
      from V$LOCKED_OBJECT lockedObject, DBA_OBJECTS objects 
      where objects.OBJECT_ID = lockedObject.OBJECT_ID;
  4. 查看哪个用户哪个进程造成的死锁

    1. select b.username,b.sid,b.serial#,logon_time from v$locked_object a, v$session b where a.session_id = b.sid order by b.logon_time;
  5. 查出锁定表的sid, serial#, 锁的类型

    1. SELECT vsession.SID, vsession.SERIAL#, vsession.USERNAME, vsession.SCHEMANAME, vsession.OSUSER, 
             vsession.PROCESS, vsession.MACHINE, vsession.TERMINAL, vsession.LOGON_TIME, vlock.TYPE
      FROM V$SESSION vsession, V$LOCK vlock 
      WHERE vsession.SID = vlock.SID AND vsession.USERNAME IS NOT NULL ORDER BY SID;
  6.  解决方式

    1. 杀死被死锁的session:alter system kill session 'SID,SERIAL#';,SID,SERIAL# 取值对应被死锁的sql的SID,SERIAL#
    2. 释放死锁:alter system kill session 'SID,SERIAL#' immediate ;,SID,SERIAL# 取值对应死锁的sql的SID,SERIAL#
    3. 重启数据库

 

标签:OBJECT,解决,死锁,SESSION,SID,Oracle,SERIAL,vsession
From: https://www.cnblogs.com/52-IT-y/p/18288644

相关文章

  • XShell连接失败解决
     实现:宿主机的Windows和虚拟机的Linux能够进行网络连接,同时虚拟机的Linux可以通过宿主机的Windows进入互联网简而言之:Windows和虚拟机的Linux能够互相ping成功解决的问题:XShell连接不成功第一步:编辑VMware的网络配置然后全部点击确定,VMware的网络配置......
  • Java编程:解决实际问题的高效方法
    ......
  • 轻松解决win7和win10共享打印机出现错误代码0x00000709的办法
    轻松解决win7系统共享打印机错误代码0x00000709的办法轻松解决win10系统共享打印机错误代码0x00000709的办法为了方便用户更方便充分的利用打印机,配置打印机共享功能,开启共享后可以查询到共享的打印机,但是点击选择连接时出现错误代码0x00000709,尝试了各种方法修改注册表等还......
  • 《已解决》无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
    原因:Python环境未正确配置:可能你没有将Python添加到系统的环境变量中。你需要手动将Python的安装目录(以及包含 pip.exe 的文件夹)添加到系统的环境变量 PATH 中。 解决:1.找到python的安装目录键盘按下  win键+R键,输入cmd回车。随后输入wherepythonwhere......
  • 线程进程2--线程安全-死锁
    5.Thread类中常用的一些方法staticvoidsleep:使当前线程阻塞多少毫秒--线程休眠yield:当前线程让出cpu参与下次竞争--使用yield线程出现交换执行的频率变高了join加入当前线程上(插入的线程执行完毕后,当前的线程才会执行)setDaemon()设置线程为守护线程(当所有的线程执行完......
  • 操作系统笔记分享(第三章 处理机的调度与死锁)
    文章目录介绍三、处理机的调度与死锁3.1处理机调度概述处理机调度层次高级调度中级调度低级调度进程调度的任务和方式处理机调度算法的目标3.2调度算法先来先服务(FCFS)短作业优先(SJF)抢占式非抢占式优先级(PR)高相应比优先调度算法(HRRN)时间片轮转(RR)多级队列多级反馈队......
  • 电脑不读硬盘的解决方法
    电脑无法读取硬盘可能由硬盘连接问题、BIOS设置不当、分区问题、硬盘故障、电源问题等引起。解决方法包括检查连接、调整BIOS设置、修复分区表、送修或更换硬盘、更换电源等。一、可能的原因硬盘连接问题:电脑无法识别硬盘的一个常见原因是硬盘与主板之间的连接出现问题。这可能......
  • 电脑开机检测不到硬盘怎么办 电脑检测不到硬盘问题解决
    电脑开机检测不到硬盘,无法进入系统或者显示“RebootandSelectproperBootdevice”等错误信息。这种情况可能会导致我们的数据丢失或者无法使用电脑。一、电脑检测不到硬盘的可能原因电脑检测不到硬盘的原因主要有以下几种:1、硬盘连接线松动或损坏:硬盘是通过SATA线或M.2插......
  • 解决 SQL Server 安装失败均,报错“等待数据库引擎恢复句柄失败”
    解决方案:方案1:格式化硬盘重新分配扇区大小,让扇区大小与SQLServer匹配。此方法可以将整个硬盘格式化掉,当然这样做的结果就是丢失所有文件,并且还需要重装系统。也可以格式化一个硬盘分区,将SQLServer安装到对应的分区就行。方案2:强制模拟扇区大小为4Kb此方法不会影响硬盘分区,......
  • 启动应用程序出现wevtutil.exe找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个wevtutil.exe文件(挑选合适的版本文件)把它......