iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >【故障处理】队列等待之enq IV - contention案例
  • 444
分享到

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

2024-04-02 19:04:59 444人浏览 泡泡鱼
摘要

【故障处理】队列等待之enq IV -  contention案例1.1  BLOG文档结构图 1.2  前言部分1.2.1  导读和注意事项各位技术爱好者

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

1.1  BLOG文档结构图

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

1.2  前言部分

1.2.1  导读和注意事项

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

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

Tips:

① 本文在itpub(Http://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 11) 64位

 

1.3.2  AWR分析

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

这里简单分析一下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中,特殊类的等待事件较多。接下来查看等待事件的部分:

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

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

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

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

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

根据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%';

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

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

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

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中可以看出节点1的CPU为48,而节点2的CPU为96。

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

从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

 

 

SQL>  select snap_id, INSTANCE_NUMBER,PARAMETER_NAME,VALUE from dba_hist_parameter where PARAMETER_NAME='cpu_count' order by snap_id;

 

   SNAP_ID INSTANCE_NUMBER PARAMETER_NAME                                                   VALUE

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

。。。。。。。。。。。。。。。。。。。。。。。。。。。

      3368               1 cpu_count                                                        48

      3369               1 cpu_count                                                        48

      3369               2 cpu_count                                                        48

      3370               1 cpu_count                                                        48

      3371               1 cpu_count                                                        48

      3372               1 cpu_count                                                        48

      3373               1 cpu_count                                                        48

      3374               1 cpu_count                                                        48

      3375               2 cpu_count                                                        96

      3375               1 cpu_count                                                        48

      3376               1 cpu_count                                                        48

      3376               2 cpu_count                                                        96

      3377               1 cpu_count                                                        48

      3377               2 cpu_count                                                        96

      3378               2 cpu_count                                                        96

      3378               1 cpu_count                                                        48

      3379               1 cpu_count                                                        48

      3379               2 cpu_count                                                        96

。。。。。。。。。。。。。。。。。。。。

 

 

 

查询告警日志:more alert*|grep -i Cpu  也可以获取CPU的变化。

询问客户可知,是他们调整过系统的CPU资源,所以导致节点2上的CPU_COUNT自动变化,引起了enq: IV -  contention等待。

若主机的CPU个数变化,那么当主机重启后数据库的cpu_count参数的值会随之变化,该参数属于操作系统依赖参数。

调整主机的CPU个数之后,该等待事件消失。

 

1.4  MOS

1.4.1  12c RAC DDL Performance Issue: High "enq: IV - contention" etc if CPU Count is Different (文档 ID 2028503.1)


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

In this Document


Symptoms

Cause

Solution

References



APPLIES TO:

Information in this document applies to any platform.

SYMPTOMS

12c RAC database seeing high "enq: IV - contention":


From awr report:

Top 10 Foreground Events by Total Wait Time
===================================
Event Waits Total Wait Time (sec) Wait Avg(ms) % DB time Wait Class
enq: IV - contention 52,914 1688.4 31.91 42.8 Other
row cache lock 44,865 896.8 19.99 22.7 Concurrency

 

tkprof of 10046 trace of SQL statement shows the same event in the top:

Event waited on Times Max. Wait Total Waited 
---------------------------------------- Waited ---------- ------------ 
enq: IV - contention 6017 0.32 287.68 
row cache lock 957 0.20 7.48 
library cache lock 631 0.13 15.10 
library cache pin 616 0.11 14.54

 

 

CAUSE

Cluster nodes have different CPU count resulting in different number of LMD processes, on one node it has two while on the other it has three.

The issue is due to the following bug:

BUG 21293056 - PERFORMANCE DEGRADATION OF GRANT STATEMENT AFTER 12C UPGRADE

Which is closed as duplicate of:

BUG 21395269 - ASYMMETRICAL LMDS CONFIGURATION IN A CLUSTER LEADS TO POOR MESSAGE TRANSFER

 

 

SOLUTION

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:

ps -ef| grep lmd

 


 

About Me

...............................................................................................................................

● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

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

● 本文itpub地址:http://blog.itpub.net/26736162/viewspace-2131320/

● 本文博客园地址:http://www.cnblogs.com/lhrbest/p/6218042.html

● 本文pdf版及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/

● QQ群:230161599     微信群:私聊

● 联系我请加QQ好友(642808185),注明添加缘由

● 于 2016-09-01 15:00 ~ 2016-10-20 19:00 在农行完成

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

...............................................................................................................................

手机长按下图识别二维码或微信客户端扫描下边的二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,免费学习最实用的数据库技术。

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

 

您可能感兴趣的文档:

--结束END--

本文标题: 【故障处理】队列等待之enq IV - contention案例

本文链接: https://www.lsjlt.com/news/39677.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql拒绝访问怎么办
    mysql 出现拒绝访问的原因和解决方法:权限问题:授予用户适当的数据库或表访问权限。防火墙或安全组:允许对 mysql 端口(3306)的入站连接。密码错误:重置 mysql 密码或使...
    99+
    2024-05-17
    mysql
  • mysql怎么比较日期大小
    mysql 中比较日期大小的方法包括:直接比较两个日期,使用 、= 运算符。使用 date_format() 函数将日期转换为字符串,然后比较字符串大小。使用 str_to_date()...
    99+
    2024-05-17
    mysql
  • mysql怎么加锁
    mysql中加锁是一种确保数据并发访问一致性的机制。加锁方式有:表级锁(对整个表加锁)和行级锁(对特定行加锁)。加锁类型有共享锁(允许读取但禁止修改)、排他锁(禁止读取和修改)和意向锁(...
    99+
    2024-05-17
    mysql 并发访问
  • mysql误删数据怎么恢复
    mysql误删数据可通过以下步骤恢复:停止数据库服务,防止数据覆盖。若开启binlog日志,可从中提取删除语句,再重新执行后将数据恢复。使用恢复工具修复表文件或恢复事务。从备份中恢复数据...
    99+
    2024-05-17
    mysql
  • 怎么判断mysql安装成功
    成功安装 mysql 的方法:检查命令行界面版本号;连接到 mysql 服务器,输入 "mysql -u root -p";创建数据库,输入 "create database test;...
    99+
    2024-05-17
    mysql linux macos 防火墙配置
  • mysql怎么修改表名
    如何修改 mysql 表名:检查当前表名:show tables;运行 rename table 语句:rename table 旧表名 to 新表名;验证更改:show tables;...
    99+
    2024-05-17
    mysql
  • mysql删除的表怎么恢复
    mysql 中已删除表的恢复方法主要涉及以下步骤:检查 binlog 日志以获取删除事务信息;使用数据恢复工具扫描数据库文件;从备份还原表数据;或联系 mysql 支持寻求帮助。 My...
    99+
    2024-05-17
    mysql 数据丢失
  • mysql复合主键怎么写
    在 mysql 中编写复合主键:在 create table 语句中使用 primary key 约束并列出字段名称。复合主键的好处包括提高查询效率、保证数据完整性和强制数据顺序。注意选...
    99+
    2024-05-17
    mysql
  • 怎么查看mysql数据库版本
    如何查看 mysql 数据库版本?连接到数据库并执行查询:select version();检查命令行或 mysql workbench 中的服务器属性。 如何查看 MySQL 数据库...
    99+
    2024-05-17
    mysql linux
  • 怎么检测mysql安装成功
    要验证 mysql 安装是否成功,请执行以下步骤:检查系统服务是否正在运行。使用 mysql 命令行工具连接到服务器。创建一个测试数据库并使用它。在数据库中创建一个测试表。插入测试数据并...
    99+
    2024-05-17
    mysql linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作