Oracle ORA-00060:Deadlock detected. More info in file /var/oracle/app/diag/rdbms/…记一次位图索引误用带来的数据库卡顿死锁

数据库死锁带来的性能严重下降

生产环境客户端多发卡顿,排查Oracle日志后发现,数据库中有很多ORA-00060: Deadlock detected. More info in file /var/oracle/app/diag/rdbms/…xxx_ora_80471.trc 记录,初步判断是由资源死锁引起的数据库性能严重下降。

DEADLOCK DETECTED ( ORA-00060 )[Transaction Deadlock]The following deadlock is not an ORACLE error. It is a
deadlock due to user error in the design of an application
or from issuing incorrect ad-hoc SQL. The following
information may aid in determining the deadlock:Deadlock graph:---------Blocker(s)--------  ---------Waiter(s)---------
Resource Name          process session holds waits  process session holds waits
TX-004f001a-0005a437       586     947     X            654    7339           S
TX-0028001d-000b2866       654    7339     X            586     947           Ssession 947: DID 0001-024A-0000028F  session 7339: DID 0001-028E-00000012
session 7339: DID 0001-028E-00000012    session 947: DID 0001-024A-0000028F Rows waited on:Session 947: obj - rowid = 0004FE8F - AABP6PAAAAAAAAAAAA(dictionary objn - 327311, file - 0, block - 0, slot - 0)Session 7339: obj - rowid = 0004FE8F - AABP6PAAAAAAAAAAAA(dictionary objn - 327311, file - 0, block - 0, slot - 0)----- Information for the OTHER waiting sessions -----
Session 7339:sid: 7339 ser: 32541 audsid: 1484784475 user: 85/XXXXX(Oralce-User)flags: (0x8000045) USR/- flags_idl: (0x1) BSY/-/-/-/-/-flags2: (0x40009) -/-/INCpid: 654 O/S info: user: oracle, term: UNKNOWN, ospid: 83983image: oracle@localhost.localdomainclient details:O/S info: user: ASP.NET v4.0, term: WIN-D74HSI9CPLM, ospid: 75884:77276machine: WORKGROUP\WIN-D74HSI9CPLM program: w3wp.exeapplication name: w3wp.exe, hash value=2799981571current SQL:UPDATE A(Oracle table) SET STATUS = :B5 ,................. WHERE ID = :B1 ----- End of information for the OTHER waiting sessions -----Information for THIS session:----- Current SQL Statement for this session (sql_id=g2vg0y4nyjkj3) -----
UPDATE A(Oracle table) SET STATUS = 'FINISHED', ................ WHERE ID = :B1
----- PL/SQL Stack -----
----- PL/SQL Call Stack -----object      line  objecthandle    number  name
0x4b5bf89238       377  package body XXX.XXX(Oracle User.package Name)
0x4b5bf89238       399  package body XXX.XXX(Oracle User.package Name)
0x4ad9899c28         8  package body XXX.XXX(Oracle User.package Name)
0x4b7f6a2ab8         1  anonymous block
===================================================

从日志中可以看到是调用的存储过程执行更新状态字段事发生的死锁。

  current SQL:UPDATE A(Oracle table) SET STATUS = :B5 ,................. WHERE ID = :B1

另外可以看到关键的资源等待信息:

Rows waited on:Session 947: obj - rowid = 0004FE8F - AABP6PAAAAAAAAAAAA(dictionary objn - 327311, file - 0, block - 0, slot - 0)Session 7339: obj - rowid = 0004FE8F - AABP6PAAAAAAAAAAAA(dictionary objn - 327311, file - 0, block - 0, slot - 0)

从这段代码可以看出,是在rowid为“0004FE8F - AABP6PAAAAAAAAAAAA”的对象资源发生的死锁。
使用

  select sys.dbms_rowid.rowid_object('0004FE8F - AABP6PAAAAAAAAAAAA') from dual;

获取对象id,从而获取对象名称信息

select *from sys.all_objects where  object_id = 'xxxxx'

得知引发死锁的是A表的位图索引I_xxx_status,删除此索引,死锁故障消失。
总结:
1.当发生大范围性能问题时,排查问题的首先应从数据库入手,分析Oracle的alter_xxx.log日志。
2.排除数据库级别的故障后,排查业务系统的性能,把执行耗时的业务逐个分析优化。
3.位图索引不能用于频繁更新值的字段。
4.当字段值域大于7个时,不能使用位图索引。

Oracle ORA-00060:Deadlock detected. More info in file /var/oracle/app/diag/rdbms/...记一次位图索引误用引发卡顿相关推荐

  1. 并发访问oracle数据库的数据死锁分析和解决措施,解决Oracle数据库死锁

    [IT168 技术文档] 介绍 本文我们尝试总结在多个用户并发情况下,如何识别和解决删除操作期间发生的死锁问题,在开始之前,我们先简单描述一下什么是死锁以及什么东西会导致死锁. 死锁 在任何数据库中发 ...

  2. Linux ora-00060,解决 ORA-00060: Deadlock detected 小例

    数据库版本: SQL > select * from v$version; BANNER ---------------------------------------------------- ...

  3. ORA-00060: Deadlock detected(场景模拟)

    from:http://www.cnblogs.com/killkill/archive/2010/09/12/1824650.html ORA-00060: Deadlock detected(场景 ...

  4. oracle 位图索引的创建,Oracle关于位图索引的创建与应用(2)

    sp;                          1              1    ==> last row 8)位图索引和NULLs --------------------- ...

  5. ORA-00060 Deadlock detected

    今天一套10.2.0.4的数据库报ORA-00060 Deadlock detected. trace部分内容: Dump file /oracle/oracle/product/10.2.0/adm ...

  6. Oracle Ora 错误解决方案合集

    Oracle Ora 错误解决方案合集 参考文章: (1)Oracle Ora 错误解决方案合集 (2)https://www.cnblogs.com/ios9/p/8627643.html 备忘一下 ...

  7. oracle ora 03137,今天遇到奇怪的ORA-03137错误(包含trc文件)

    今天下午同事突然反映,打开一个用户数据的时候 报错:ora-03114:未连接数据库 很奇怪的错误信息, 查看alert log文件 系统在报错: 2010/6/24 13:46:46      Th ...

  8. oracle ora 00283,【案例】Oracle报错ORA-16433非归档丢失redo无法启动的恢复过程

    天萃荷净 Oracle研究中心案例分析:运维DBA反映Oracle数据库处理非归档模式,redo文件损坏常规修复无法正常open数据库. 本站文章除注明转载外,均为本站原创: 转载自love wife ...

  9. oracle ora 16047,令人误解的ORA-16047: DGID mismatch between destination setting and target database...

    今天为一个Rac onenode的主库搭建好一个dg库之后,一直没有传日志,在主库的alertlog中,有报错: Thu Jun 29 14:55:34 2017 ALTER SYSTEM SET l ...

最新文章

  1. 并发环境下HashMap引起的full gc排查
  2. 数据可视化高级部分:如何使用轨迹地图对路径数据进行分析
  3. 李善友《认知升级之第一性原理》--507张PPT全解!_搜狐科技_搜狐网
  4. css设置title字体_CSS中简写属性要注意TRouBLe的顺序,避免踩坑
  5. 一文带你学会 UML 统一建模语言
  6. Javascript基础之-Promise
  7. mysql asp.net core_基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(2) - EF Core (MySQL) CodeFirst 数据库迁移与依赖注入...
  8. excel保存时 检测到错误,Microsoft Excel可通过删除或修复某些功能来保存此文件
  9. mybatis plug 只查id_MyBatis Generator的一个问题引发对插件的修改
  10. 【渝粤教育】电大中专计算机职业素养 (7)作业 题库
  11. Android/iOS 终端快速截屏技巧
  12. 反馈电路反馈类型的快速判断
  13. 怎么样可以批量下载网页图片?
  14. 拨号ECS和拨号VPS的区别
  15. table 表格合并
  16. 来自1959《粉红色潜艇》的经典语录
  17. 闪烁?卡顿?CSS硬件加速了解一下(will-change属性详解)
  18. openssl自签名ca证书,以及签发服务端/客户端证书
  19. CDH6 安装 Apache atlas
  20. 【C 语言小游戏】手打贪吃蛇1,闭关在家37天“吃透”这份345页PDF

热门文章

  1. ORACLE分区表、分区索引详解
  2. OpenGL绘制地月天体,基于Qt框架。
  3. 一周XX思考(第13期)
  4. 2019高中计算机会考操作题,2019年高中信息技术会考练习题.doc
  5. three.js 实现管道流动特效
  6. RabbitMQ与SpringMVC集成并实现发送消息和接收消息(持久化)方案一
  7. Request URI does not contain a valid hostname: service-eureka-order/order/1 解决方法
  8. Linux PWM驱动框架 (二)
  9. 中国自动贴标机行业市场供需与战略研究报告
  10. 文本分类——NLV算法研究与实现