ITPub博客

首页 > 数据库 > Oracle > Oracle Enqueues Wait Events 三

Oracle Enqueues Wait Events 三

翻译 Oracle 作者:Haoword_wang 时间:2020-08-04 23:08:39 0 删除 编辑

什么是TX锁,我们这里借鉴MOS上的概述简单描述以下,后面我们根据具体的场景具体分析。
当一个事务开始对事务内的一个对象进行改变时,会获取一个TX锁,并一直持有到事务执行提交或回滚为止。它主要作用是一种排队机制,以便其他会话可以等待事务完成。TX锁的锁名(ID1和ID2)反映活动事务的事务ID。

(A TX lock is acquired when a transaction initiates its first change and is held until the transaction does a COMMIT or ROLLBACK. It is used mainly as a queuing mechanism so that other sessions can wait for the transaction to complete. The lock name (ID1 and ID2) of the TX lock reflect the transaction ID of the active transaction.)


注意:TX锁是一个应用程序编码、设计和使用的问题,只能通过更频繁、更明确的提交语句和任何其他较小的代码更改来修改应用程序代码。Oracle支持除了帮助识别引起等待的对象和命令外,无法彻底解决TX锁等待问题。还是需要协助开发人员一起修复代码,以此来缓解TX锁等待。

(NOTE: TX lock is an application coding, design and usage problem and can ONLY be fixed by changing application code with more frequent and explicit COMMIT statements and any other minor code changes. Oracle Support cannot fix TX lock wait issues other than helping to identify the objects and commands causing the waits. Please work with Developers to fix the code and to alleviate TX lock waits.)

我们接下来主要描述几种TX锁,希望对大家的后期学习和解决问题有用。

'enq: TX - row lock contention'

'enq: TX - index contention'

'enq: TX - allocate ITL entry'

'enq: TX - contention'


下面是我们确认TX等待索引的语句
如果遇到与锁相关的挂起场景,可以使用以下SQL语句来帮助隔离等待器和拦截器:
显示所有等待锁的会话:
显示列的意思:event:会话正在等待的资源或事件,
P1—与等待相关的数据文件的全部文件数量。
P2—P1中的数据文件的块数量。
P3—描述等待产生原因的代码。
    SELECT event,  p1,  p2,  p3
    FROM v$session_wait
    WHERE wait_time= 0
    AND event like 'enq%';
在10g开始,存在一个不同的更具描述性的事件名称,用于更频繁的队列,您可以查询TX等待事件如下:
P1RAW、P2RAW和P3RAW列显示的值与P1、P2和P3列相同,只是数字是以十六进制显示的。
    SELECT sid,  p1,p1raw,  p2,p2raw,  p3,p3raw
    SELECT sid,  p1raw,  p2,  p3
    FROM v$session_wait
    WHERE wait_time     = 0
    AND event        like 'enq: TX%';
显示当前等待TX锁的会话:
    SELECT * FROM v$lock WHERE type='TX' AND request>0;
显示当前持有TX锁的会话:
    SELECT * FROM v$lock WHERE type='TX' AND lmode > 0;
显示哪些段经历了最多的行锁等待:
    SELECT owner, object_name, subobject_name, value
    FROM v$segment_statistics
    WHERE statistic_name='row lock waits'
    AND value > 0
    ORDER BY 4 DESC;


V$SESSION_WAIT视图各列解释引用地址

https://blog.csdn.net/licheng6302/article/details/7329675

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26342786/viewspace-2709282/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle MySQL DBA,DEVOPS 开发人员

注册时间:2013-03-03

  • 博文量
    14
  • 访问量
    12506