当前位置: 首页 > news >正文

教您如何检查oracle死锁,决解死锁

oracle死锁问题一直困扰着我们,下面就教您一个oracle死锁的检查方法,如果您之前遇到过oracle死锁方面的问题,不妨一看……

  oracle死锁问题一直困扰着我们,下面就教您一个oracle死锁的检查方法,如果您之前遇到过oracle死锁方面的问题,不妨一看。

  一、数据库死锁的现象

  程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。

  二、oracle死锁的原理

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

  三、oracle死锁的定位方法

  通过检查数据库表,能够检查出是哪一条语句被死锁,产生死锁的机器是哪一台。

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

    1. kill掉这个死锁的进程:

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

 

   2. 如果还不能解决:(linux)

          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进程。

转载于:https://www.cnblogs.com/gdzhong/p/4863898.html

相关文章:

  • openlayers限制地图拖动区域
  • 测试人员的职业修养
  • 批生产数据库
  • 彩色图像--色彩空间 HSI(HSL)、HSV(HSB)
  • java中Map,List与Set的区别
  • 利用print2flashsetup.exe文档转swf
  • poj 3254 Corn Fields 国家压缩dp
  • [实战]MVC5+EF6+MySql企业网盘实战(5)——登录界面,头像等比例压缩
  • [转]Java输入输出流的使用详细介绍
  • 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数005·graphics-obj,基本绘图单元,包括线段、矩形、椭圆、圆形...
  • iOS app无launch screen.xib 对各个版本进行适配
  • iOS tintColor解析
  • 19/10/2015 晴 十点
  • GitHub Config文件中[user] [remote origin]的配置
  • Java Web 登录采用非对称加密(RSA算法)
  • [译] React v16.8: 含有Hooks的版本
  • [译] 怎样写一个基础的编译器
  • [译]Python中的类属性与实例属性的区别
  • Django 博客开发教程 16 - 统计文章阅读量
  • isset在php5.6-和php7.0+的一些差异
  • Javascript 原型链
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • JS基础之数据类型、对象、原型、原型链、继承
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Linux gpio口使用方法
  • miaov-React 最佳入门
  • sublime配置文件
  • vue-loader 源码解析系列之 selector
  • webpack+react项目初体验——记录我的webpack环境配置
  • 给github项目添加CI badge
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 手写双向链表LinkedList的几个常用功能
  • 通过npm或yarn自动生成vue组件
  • 在Mac OS X上安装 Ruby运行环境
  • AI算硅基生命吗,为什么?
  • scrapy中间件源码分析及常用中间件大全
  • 阿里云ACE认证之理解CDN技术
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (42)STM32——LCD显示屏实验笔记
  • (8)STL算法之替换
  • (Matlab)使用竞争神经网络实现数据聚类
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET Core 中插件式开发实现
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .net和jar包windows服务部署
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • :=
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • [ASP]青辰网络考试管理系统NES X3.5
  • [CQOI 2011]动态逆序对
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘