今天在 ORACLE ALLSTAR群里讨论了一个关于队列锁死锁检测的问题,原帖子在这里。 有同学指出对于enqueue lock的死锁检测应当是每3 秒钟检测一次,这样说的依据是通过一个简单可重复的实验可以证明在实际出现ora-00060 dead lock错前process等待了3s:

SQL> select * from v$version;BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE    10.2.0.5.0      Production
TNS for Linux: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - ProductionSQL> select * from global_name;GLOBAL_NAME
--------------------------------------------------------------------------------
www.oracledatabase12g.comPROCESS A:set timing on;
update maclean1 set t1=t1+1;PROCESS B:update maclean2 set t1=t1+1;PROCESS A:
update maclean2 set t1=t1+1;PROCESS B:update maclean1 set t1=t1+1;等待3s后 PROCESS A 会报ERROR at line 1:
ORA-00060: deadlock detected while waiting for resourceElapsed: 00:00:03.02

可以看到Process A在检测到死锁之前确实等待了 3s,而且这是一个可以重复的实验,很具有说服力。 事实真的是这样的吗?   来看下面的演示:

SQL> col name for a30
SQL> col value for a5
SQL> col DESCRIB for a50
SQL> set linesize 140 pagesize 1400
SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ2   FROM SYS.x$ksppi x, SYS.x$ksppcv y3   WHERE x.inst_id = USERENV ('Instance')4   AND y.inst_id = USERENV ('Instance')5   AND x.indx = y.indx6  AND x.ksppinm='_enqueue_deadlock_scan_secs';NAME                           VALUE DESCRIB
------------------------------ ----- --------------------------------------------------
_enqueue_deadlock_scan_secs    0    deadlock scan intervalSQL> alter system set "_enqueue_deadlock_scan_secs"=18 scope=spfile;System altered.Elapsed: 00:00:00.01SQL> startup force;
ORACLE instance started.Total System Global Area  851443712 bytes
Fixed Size                  2100040 bytes
Variable Size             738198712 bytes
Database Buffers          104857600 bytes
Redo Buffers                6287360 bytes
Database mounted.
Database opened.PROCESS A:SQL> set timing on;
SQL> update maclean1 set t1=t1+1;1 row updated.Elapsed: 00:00:00.06Process BSQL> update maclean2 set t1=t1+1;1 row updated.SQL>  update maclean1 set t1=t1+1;Process A:
SQL>
SQL> alter session set events '10704 trace name context forever,level 10:10046 trace name context forever,level 8';Session altered.SQL> update maclean2 set t1=t1+1;
update maclean2 set t1=t1+1*
ERROR at line 1:ORA-00060: deadlock detected while waiting for resource

版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任
本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1278333

Know more about Enqueue Deadlock Detection相关推荐

  1. 案例分析:你造吗?有个ORA-60死锁的解决方案

    关注↑↑↑我们获得更多精彩内容! 问题综述 1 这段时间应用一直被一个诡异的 ORA-00060 的错误所困扰,众所周知,造成 ORA-00060 的原因是由于应用逻辑,而非 Oracle 数据库自己 ...

  2. Identify ksusetxn DID:An Deadlock ID

    我们在查看10704 event trace(Print out information about what enqueues are being obtained)或deadlock detect ...

  3. Deadlock 和 Deadlock Prevention

    一.Thread Deadlock A deadlock is when two or more threads are blocked waiting to obtain locks that so ...

  4. 12.2 新特性:锁信息获取之在线删除索引

    黄廷忠 云和恩墨西区交付总监  简介: 超过10年专职电信行业 Oracle 数据库管理和运维经验,熟悉电信行业的业务.数据库及硬件架构.擅长数据库各种迁移方法.优化.疑难故障排除.数据库异常恢复等. ...

  5. 并行insert出现library cache lock与cursor: pin S wait on X等待问题记录

    一. 故障现象与紧急处理 开发反馈凌晨5点左右应用出现大量报错 ORA-04021: timeout occurred while waiting to lock object,并且集中出现在inse ...

  6. Android Watchdog框架解析、应用与改造(上)

    简言: frameworks/base/services/java/com/android/server/ 系统框架服务目录下,可以看到名为Watchdog.java文件,这是一个软件看门狗的实现,其 ...

  7. (转载)library cache lock和library cache pin到底是什么

    (http://www.dbsnake.net/library-cache-lock-and-pin.html) Posted: December 16, 2011 | Author: Cui Hua ...

  8. RAC 中GES/GCS原理

    一.RAC的GES/GCS原理(1) 为了保证群集中的实例的同步,两个虚拟服务将被实现:全局排队服务(GES),它负责控制对锁的访问.全局内存服务(GCS),控制对数据块的访问. GES 是 分布式锁 ...

  9. RAC的GES/GCS原理

    一.RAC的GES/GCS原理(1) 为了保证群集中的实例的同步,两个虚拟服务将被实现:全局排队服务(GES),它负责控制对锁的访问.全局内存服务(GCS),控制对数据块的访问. GES 是 分布式锁 ...

最新文章

  1. 硬货 | Redis 性能问题分析
  2. 让我们来谈谈对Linux的认识,值得每一位运维人员深读
  3. linux文件属性 -rwxr-xrw,Linux文件属性
  4. cv::parallel_for_ 的一个例子
  5. Fabric--区块链应用开发
  6. Unicode简介【转】
  7. 春运公益片“情满回家路”上线 顺风车等出行方式再被呼吁
  8. Oracle-SQL程序优化4
  9. 基于java(springboot框架)的购物商城系统 开题报告
  10. 人体模型 java代码_java3d人体模型.doc
  11. sql字符型注入-sqli第1关
  12. 划片机的性能决定了芯片产品的质量
  13. CF1015C Songs Compression (#贪心)
  14. 什么是压测,为什么要进行压力测试?JMETER工具的使用
  15. 星星之火-31:WCDMA码分多址复用与解复用的数学计算案例
  16. 什么是CUDA和CUDNN?——GeForce NVIDIA显卡用于深度学习计算的GPU加速工具
  17. 【Linux 内核】CFS 调度器 ③ ( 计算进程 “ 虚拟运行时间 “ )
  18. photoshop图像处理技术(二)
  19. Spark+Hadoop环境搭建
  20. 使用计算机软件进行电视剪辑称为,影视制作中计算机技术的创新应用

热门文章

  1. sqlserver的存储过程
  2. 将m个苹果放入n个盘子的问题【转】
  3. Windows Embedded Standard 7 剪裁随笔
  4. [和管子对话] 2 2007-4-6/抽象类和接口的谁是谁非
  5. 测试基础-07-测试报告编写
  6. 手写一个动态代理实现,手写Proxy,手写ClassLoader,手写InvocationHandler
  7. 方法的运用_运用正确管理方法缩减库存,助力企业发展
  8. cortex a7 a53_西昊人体工学椅A7开箱测评
  9. 10个实用的 ES6 方法
  10. 石头剪刀布代码android,微信小程序源码解说:石头剪刀布(附源码下载)