故障处理队列等待之enq IV - contention案例

Posted ^_^小麦苗^_^

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了故障处理队列等待之enq IV - contention案例相关的知识,希望对你有一定的参考价值。

【故障处理】队列等待之enq IV -  contention案例

1.1  BLOG文档结构图

wpsAAE0.tmp 

1.2  前言部分

1.2.1  导读和注意事项

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~

队列等待之enq IV -  contention案例(重点)

Tips

本文在itpubhttp://blog.itpub.net/26736162)、博客园(http://www.cnblogs.com/lhrbest)和微信公众号(xiaomaimiaolhr有同步更新

文章中用到的所有代码相关软件相关资料及本文的pdf版本都请前往小麦苗的云盘下载小麦苗的云盘地址见:http://blog.itpub.net/26736162/viewspace-1624453/

若网页文章代码格式有错乱,下载pdf格式的文档来阅读

本篇BLOG,代码输出部分一般放在一行一列的表格中。

本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力。

 

 

1.3  故障分析及解决过程

 

1.3.1  数据库环境介绍

 

项目

source db

db 类型

RAC

db version

12.1.0.2.0

db 存储

ASM

OS版本及kernel版本

SuSE Linux Enterprise Server(SLES 1164

 

1.3.2  AWR分析

wpsAAF1.tmp 

这里简单分析一下Up Time(hrs),其它几个指标都很熟悉了。表中的“Up Time(hrs)”代表自数据库实例启动到本次快照结束这段时间的小时数。例如,该AWR中数据库实例1的启动时间为“2016-08-11 20:51”,快照结束时间为“2016-12-14 21:00”,故“Up Time(hrs)”约为125.006天,转换为小时约为3000.14小时,如下所示:

SYS@lhrdb> SELECT trunc(UP_TIME_D,3),  trunc(trunc(UP_TIME_D,3)*24,2) UP_TIME_HRS FROM (SELECT (TO_DATE(\'2016-12-14 21:00\', \'YYYY-MM-DD HH24:MI\') - TO_DATE(\'2016-08-11 20:51\', \'YYYY-MM-DD HH24:MI\'))  UP_TIME_D FROM DUAL);

 

TRUNC(UP_TIME_D,3) UP_TIME_HRS

------------------ -----------

           125.006     3000.14

 

可以看到节点1的负载较大,而ADDM中,特殊类的等待事件较多。接下来查看等待事件的部分:

wpsAAF2.tmp 

可以看到enq: IV - contention和DFS lock handle等待较为严重。这里需要说一下enq: IV - contention这个名称。在AWR中,IV-的前后都是1个空格,而在数据库中记录的是-之后有2个空格,如下:

wpsAAF3.tmp 

所以,采用搜索的时候需要注意。

wpsAAF4.tmp 

根据ASH中的p1参数的值获得:

SYS@lhrdb> SELECT CHR(BITAND(1230372867, -16777216) / 16777215) ||

  2         CHR(BITAND(1230372867, 16711680) / 65535) "LOCK",

  3         BITAND(1230372867, 65535) "MODE"

  4    FROM DUAL;

 

LO       MODE

-- ----------

IV          3

 

 

1.3.3  enq: IV -  contention解决

    SELECT *

      FROM V$EVENT_NAME A

     WHERE A.NAME LIKE \'%enq: IV -  contention%\';

wpsAAF5.tmp 

该等待事件为12c特有,12c相比11g多了大约500多个等待事件。该问题参考MOS12c RAC DDL Performance Issue: High "enq: IV - contention" etc if CPU Count is Different (文档 ID 2028503.1)

wpsAB05.tmp

The fix will be included in future PSU, patch exists for certain platform/version.

The workaround is to set the following parameter to the highest value in the cluster and restart:

_ges_server_processes

To find out the highest value, run the following grep on each node:

ps -ef| grep lmd

 

该等待事件主要是由于12c RAC的2个节点上的cpu_count这个变量不一致导致的。

AWR中可以看出节点1CPU48,而节点2CPU96

wpsAB06.tmp 

dba_hist_parameter中可以看到CPU_COUNT这个参数的变化历史:

 

SQL> SHOW PARAMETER CPU  

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

cpu_count                            integer     96

parallel_threads_per_cpu             integer     2

resource_manager_cpu_allocation      integer     96

enq: TX - row lock contention故障处理一则

理队列等待之TX - allocate

关于12C RAC 上的top5 问题:enq: IV - contention

关于12C RAC 上的top5 问题:enq: IV - contention

ORACLE等待事件:enq: TX - row lock contention

Oracle 性能之 Enq: CF - contention

(c)2006-2024 SYSTEM All Rights Reserved IT常识