`
itspace
  • 浏览: 978845 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何诊断高水位争用(enq: HW - contention)

SQL 
阅读更多
上文讲到了高水位推进的情况,当并发会话同时进行insert时,极易引起高水位争用enq: HW - contention,那么发生此类争用时,该如何诊断呢?
查看v$session_wait,应该会有如下等待事件:

SQL>select event,p1,p2,p3 from v$session_wait;
EVENT                     P1         P2      P3
---------------------- --------   ------- ----------
enq: HW - contention 1213661190  4 17005691

通过P3进行DBMS_UTILITY转换可以获知发生争用的文件和block
SQL> select DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(17005691) FILE#,
  2  DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(17005691) BLOCK#
  3  from dual;

     FILE#     BLOCK#
---------- ----------
         4     228475
        
进而通过file#和block#定位对象

SQL> select owner, segment_type, segment_name
  2  from dba_extents
  3  where file_id = 4
  4  and 228475 between block_id and block_id + blocks - 1;


OWNER SEGMENT_TYPE SEGMENT_NAME
--------------- --------------- ------------------------------
SCOTT LOBSEGMENT EMP_DATA_LOB

我们知道enqueue锁的p2,p3值与v$lock的id1,id2值相同,同样通过id2,也可以知道发生争用的文件和block
SQL> select DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(ID2) FILE#,
  2  DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(ID2) BLOCK#
  3  from v$lock
  4  where type = 'HW';
      FILE#     BLOCK#
---------- ----------
         4     228475

通过p1值可以知道锁类型和模式

SQL> select chr(bitand(1213661190,-16777216)/16777215)||
  2  chr(bitand(1213661190,16711680)/65535) "Lock",to_char( bitand(1213661190, 65535) ) "Mode" from dual;
Lock       Mode
---------- ----------
HW         6

当知道了,lob对象发生高水位争用时,该怎么办呢?metalink(740075.1)为我们提供了几种解决办法,仅供参考
引用
1. When using Automatic Segment Space Management (ASSM)

   a) As temporary workaround, manually add extra space to the LOB segment
      ALTER TABLE <lob_table>
      MODIFY LOB (<column_name>) (allocate extent (size <extent size>));
OR
   b) It may related Bug 6376915.
   Refer to Note 6376915.8 "Bug 6376915 HW enqueue contention for ASSM LOB segments"
   In 10.2.0.4 or above, this fix has been included, and can be enabled by setting event 44951 to a value
   between 1 and 1024.  A higher value would be more beneficial in reducing contention.
   EVENT="44951 TRACE NAME CONTEXT FOREVER, LEVEL < 1 - 1024 >"
OR
  c) Consider partitioning the LOB  in a manner that will evenly distribute concurrent DML across multiple partitions 

2. When using Manual Segment Space Management(MSSM)

a) As temporary workaround, manually add extra space to the LOB segment
    ALTER TABLE <lob_table>   
    MODIFY LOB (<column_name>) (allocate extent (size <extent size>));
OR
     b) Consider partitioning the LOB in a manner that will evenly distribute concurrent DML across multiple partitions

分享到:
评论

相关推荐

    BLOG_【AWR分析】Oracle_lhr_队列等待之enq IV - contention案例.pdf

    ### Oracle AWR 分析之 enq: IV - Contention 案例解析 #### 一、概述 在Oracle数据库管理中,AWR (Automatic Workload Repository) 是一个非常重要的工具,用于诊断性能瓶颈并帮助优化数据库操作。本文将详细介绍...

    enq PS - contention.pdf

    当出现 `enq: PS - contention` 错误时,意味着数据库中的并行操作(例如并行查询或DML操作)在争用某些资源,如并行服务器队列、并行执行段或者并行任务。解决这个问题的方法通常包括以下几个方面: - **优化...

    enq:TX index contention.txt

    cause:当插入新的索引条目时,发现索引块中没有足够的空间容纳新的索引条目,索引块就会产生分裂(分为5-5分裂...这时就会表现为enq: TX - index contention。本例中索引块分裂属于5-5 分裂,此分裂可以通过awr报告观察

    BLOG_【故障处理】Oracle_lhr_序列cache值过小导致CPU利用率过高.pdf

    竞争增加会导致enq:SQ-contention事件发生次数增多,进而增加CPU使用率。 同时,DFSlockhandle等待事件也是由于数据文件锁定而造成的等待。它通常与数据库文件的锁定和解锁操作有关。当多个事务试图同时访问同一...

    BLOG_Oracle_lhr_ 【等待事件】等待事件系列(5.1)--Enqueue(队列等待) .pdf

    例如,假设在一个高并发的应用场景中出现了大量的enq:DX-contention等待,此时我们可以: - 使用V$ENQUEUE视图来确定哪些数据对象导致了这种等待。 - 分析SQL语句,看是否可以优化查询逻辑,减少对这些对象的操作。...

    BLOG_【故障处理】Oracle_lhr_队列等待之TX - allocate ITL entry案例.pdf

    - **等待事件**:`enq: TX-allocate ITL entry`出现频率较高,说明存在大量事务竞争同一行数据的ITL。 - **AWR报告** 显示该等待事件占据了很高的等待时间比例,达到了85.22%,这进一步证实了该问题的存在。 #### ...

    ASCII码简介对照表

    6. **询问(ENQ)** - 十进制:5 - 八进制:005 - 十六进制:05 - 二进制:00000101 - HTML实体:`&#005;` - 描述:用于请求对方发送确认或响应。 7. **收到通知(ACK)** - 十进制:6 - 八进制:006 - ...

    undo引起的告警.txt

    当系统activity增加或者降低的时候,oracle SMON进程会自动ONLINE或者OFFLINE rollback segments。这样导致某些与undo segments相关的latch或者enqueue被...导致系统很多活跃session都开始等待enq: US - contention。

    【故障处理】队列等待之TX 等待事件处理.docx

    使用`DBA_HIST_SYS等待视图`或`V$SESSION_WAIT`动态视图来检测和诊断死锁。一旦发现死锁,可以通过`ALTER SYSTEM KILL SESSION 'SID, SERIAL#'`命令强制结束导致死锁的会话。 ### ITL死锁模拟与Merge语句优化 ...

    ASCII码表 0 255 pdf

    ASCII码使用指定的7位或8位二进制数组合来表示128种可能的字符,包括英文字母、数字、标点符号以及控制字符等。 给定文件提供了ASCII码表0到255的范围内的详细信息,这不仅涵盖了所有标准的ASCII字符,还包括了一些...

    ASCII编码-控制字符[文].pdf

    - **说明**: 类似于DC1,用于更高级别的设备控制。 ##### 20. **DC3 (Device Control 3, 设备控制 3)** - **二进制**: 0010011 - **十进制**: 19 - **十六进制**: 13 - **说明**: 用于特定的设备控制。 ##### 21....

    BLOG_【故障处理】Oracle_lhr_队列等待之TX - row lock contention

    ### 故障处理:Oracle_lhr_队列等待之TX - row lock contention #### 一、概述 在Oracle数据库管理中,“enq:TX-rowlockcontention”是一种常见的队列等待事件,通常与行级别的锁定冲突有关。这种冲突可能会导致...

    basis :ccms - general system administration tasks.pdf

    - 进程概述屏幕会显示正在运行的DIA(对话)、BTC(后台)、SPO(打印池)、ENQ(排队)以及UPD(更新)等不同类型进程的数量。 - 例如,从上面的截图中可以看出,有4个对话进程(DIA)、3个更新进程(UPD)、2个...

    ASCII码 精美版

    ENQ (Enquiry) - 询问字符 - **ASCII值**: 5 - **用途**: 请求对方发送确认信号。常用于通讯协议中。 ##### 7. ACK (Acknowledgement) - 承认 - **ASCII值**: 6 - **用途**: 表示已成功接收消息。用于通讯协议中...

    ASCIL 码表:ascil 编码对照表

    它采用7位二进制数来表示所有的大写和小写字母、数字0到9、标点符号以及在美式英语中使用的特殊控制字符。由于7位最多可以表示128种不同的字符,因此ASCII码的范围是从0到127。 #### 二、ASCII码表结构解析 ASCII...

    序列等待事件总结

    这种等待可能意味着节点间协调锁资源时存在争用。解决这个问题可能需要分析DFS锁的使用模式,调整锁粒度,或者优化并发控制策略。 4. **enq SV - contention**: 这个等待事件可能与数据库的内部同步机制有关,...

    orcale死锁查杀PB版

    - 使用`v$session_wait`视图查找等待类型的`ENQ: TX - row lock contention`或`ENQ: TX - deadlock`。 - 查询`v$deadlock`和`v$deadlock_monitor`视图获取死锁信息。 - 执行`DBMS_LOCK.MONITOR`过程来监控死锁...

    Laboman6接口格式

    - **应用场景**: 适用于多种类型的医疗设备,无论这些设备使用何种通信协议或标准,Laboman6都能确保它们之间的高效互联互通。 - **双向通讯模式**: 在Laboman6中启用easyaccess4.2的双向通讯模式,需要在CDF_LIS的...

    高级owi与oracle性能调优

    - **处理死锁和锁争用**:分析v$lock视图,诊断和解决锁相关的问题。 - **分析和优化表空间的使用情况**:例如,使用表空间映射和自动段空间管理。 ### Oracle性能调优实践案例 在实践中,调优工作往往需要结合...

Global site tag (gtag.js) - Google Analytics