[转帖]oracle 11.2.0.4 rac集群等待事件enq: TM - contention

oracle,rac,集群,等待,事件,enq,tm,contention · 浏览次数 : 0

小编点评

## 排版总结 **1. SQL语句介绍** * 74j1zd36h4n96删除MW_SYS.MWT_IS_USER记录中的用户ID值 * 74j1zd36h4n96删除MW_SYS.MWT_IS_USER记录中的用户名称值 * 74j1zd36h4n96删除MW_SYS.MWT_IS_USER记录中的用户系统值 * 74j1zd36h4n96删除MW_SYS.MWT_IS_USER记录中的用户状态值 **2. 删除数据量** * 24个会话分布在两个节点上通知对同一张表执行相同的delete操作 * 删除的数据量是大范围的,只保留2条记录 **3. 问题解决方案** * 由以上信息可知,24个会话分布在两个节点上通知对同一张表执行相同的delete操作,而且删除的数据量是大范围的,只保留2条记录, 因此导致严重的enq:TM锁。 * 建议解决这个问题,通过控制会话间执行的delete语句删除的数据没有交集,或通过使用分批执行删除操作等方法控制删除数据量。

正文

    近期,一金融客户oracle 11.2.0.4 rac集群delete不当导致等待事件enq: TM - contention严重引起大范围会话堆积,记录的相关分析工作如下。

1、登录集群任意节点,查看集群全局等待事件

SQL> select event,count(*) from gv$session where wait_class<>'Idle' group by event; 
EVENT                                         COUNT(*) 
---------------------------------------------------------------- ---------- 
enq: TM - contention                  24

2、查看等待事件在两个节点的分布

节点1:

EVENT COUNT(*) 
---------------------------------------------------------------- ---------- 
SQL*Net message from client 79 
rdbms ipc message 64 
enq: TM - contention 22 
gcs remote message 10 
Space Manager: slave idle wait 5 
wait for unread message on broadcast channel 4 
DIAG idle wait 4 
class slave wait 3 
Streams AQ: waiting for time management or cleanup tasks 2 
Streams AQ: qmn coordinator idle wait 2 
PX Deq: Execution Msg 2 
VKTM Logical Idle Wait 2 
GCR sleep 2 
Streams AQ: qmn slave idle wait 2 
smon timer 2 
pmon timer 2 
ges remote message 2 
ASM background timer 2 
PING 2 
PX Deq: Execute Reply 1

节点2:

EVENT COUNT(*) 
---------------------------------------------------------------- ---------- 
SQL*Net message from client 49 
rdbms ipc message 32 
gcs remote message 5 
wait for unread message on broadcast channel 2 
class slave wait 2 
DIAG idle wait 2 
Space Manager: slave idle wait 2 
enq: TM - contention 2 
smon timer 1 
PING 1 
Streams AQ: qmn slave idle wait 1 
SQL*Net message to client 1 
GCR sleep 1 
ges remote message 1 
VKTM Logical Idle Wait 1 
Streams AQ: qmn coordinator idle wait 1 
ASM background timer 1 
pmon timer 1 
Streams AQ: waiting for time management or cleanup tasks 1

19 rows selected.

3、查看引起enq: TM - contention等待事件的会话信息

       SID USERNAME SQL_ID MODULE MACHINE PROGRAM 
---------- ---------- ------------- ---------- ---------------------------------------------------------------- ------------------------------------------------ 
363 MW_SYS 74j1zd36h4n96 localhost.localdomain 
387 MW_SYS 74j1zd36h4n96 localhost.localdomain 
602 MW_SYS 74j1zd36h4n96 localhost.localdomain 
626 MW_SYS 74j1zd36h4n96 localhost.localdomain 
674 MW_SYS 74j1zd36h4n96 localhost.localdomain 
1106 MW_SYS 74j1zd36h4n96 localhost.localdomain 
1441 MW_SYS 74j1zd36h4n96 localhost.localdomain 
1730 MW_SYS 74j1zd36h4n96 localhost.localdomain 
1946 MW_SYS 74j1zd36h4n96 localhost.localdomain 
1969 MW_SYS 74j1zd36h4n96 localhost.localdomain 
1993 MW_SYS 74j1zd36h4n96 localhost.localdomain 
1994 MW_SYS 74j1zd36h4n96 localhost.localdomain 
2041 MW_SYS 74j1zd36h4n96 localhost.localdomain 
2042 MW_SYS 74j1zd36h4n96 localhost.localdomain 
2066 MW_SYS 74j1zd36h4n96 localhost.localdomain 
2067 MW_SYS 74j1zd36h4n96 localhost.localdomain 
2091 MW_SYS 74j1zd36h4n96 localhost.localdomain 
2114 MW_SYS 74j1zd36h4n96 localhost.localdomain 
2137 MW_SYS 74j1zd36h4n96 localhost.localdomain 
2138 MW_SYS 74j1zd36h4n96 localhost.localdomain 
2161 MW_SYS 74j1zd36h4n96 localhost.localdomain 
2162 MW_SYS 74j1zd36h4n96 localhost.localdomain 
2209 MW_SYS 74j1zd36h4n96 localhost.localdomain 
2233 MW_SYS 74j1zd36h4n96 localhost.localdomain 
24 rows selected.

4、查看SQL语句74j1zd36h4n96文本信息

SQL_FULLTEXT 
-------------------------------------------------------------------------------- 
delete from mw_sys.mwt_is_user m where m.user_id not in('0D3C0ACD-C95B-42DA-A5DE 
-70F019DAB52B','8697D72E-C77B-4C70-A434-ED7D488ADC36');

5、查看SQL语句74j1zd36h4n96的执行计划

PLAN_TABLE_OUTPUT 
--------------------------------------------------------------------------------------------------------------
SQL_ID 74j1zd36h4n96, child number 0 
------------------------------------- 
delete from mw_sys.mwt_is_user m where m.user_id not 
in('0D3C0ACD-C95B-42DA-A5DE-70F019DAB52B','8697D72E-C77B-4C70-A434-ED7D4 
88ADC36') 
Plan hash value: 3271715000 
---------------------------------------------------------------------------------- 
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | 
---------------------------------------------------------------------------------- 
| 0 | DELETE STATEMENT | | | | 210 (100)| | 
| 1 | DELETE | MWT_IS_USER | | | | | 
|* 2 | TABLE ACCESS FULL| MWT_IS_USER | 18739 | 951K| 210 (1)| 00:00:03 | 
---------------------------------------------------------------------------------- 
Query Block Name / Object Alias (identified by operation id): 
------------------------------------------------------------- 
1 - DEL$1 
2 - DEL$1 / M@DEL$1 
Outline Data 
------------- 
/*+ 
BEGIN_OUTLINE_DATA 
IGNORE_OPTIM_EMBEDDED_HINTS 
OPTIMIZER_FEATURES_ENABLE('11.2.0.4') 
DB_VERSION('11.2.0.4') 
OPT_PARAM('_bloom_filter_enabled' 'false') 
OPT_PARAM('_optimizer_extended_cursor_sharing' 'none') 
OPT_PARAM('_bloom_pruning_enabled' 'false') 
OPT_PARAM('_optimizer_extended_cursor_sharing_rel' 'none') 
OPT_PARAM('_optimizer_adaptive_cursor_sharing' 'false') 
OPT_PARAM('_optimizer_use_feedback' 'false') 
ALL_ROWS 
OUTLINE_LEAF(@"DEL$1") 
FULL(@"DEL$1" "M"@"DEL$1") 
END_OUTLINE_DATA 
*/ 
Predicate Information (identified by operation id): 
--------------------------------------------------- 
2 - filter(("M"."USER_ID"<>'0D3C0ACD-C95B-42DA-A5DE-70F019DAB52B' AND 
"M"."USER_ID"<>'8697D72E-C77B-4C70-A434-ED7D488ADC36')) 
Column Projection Information (identified by operation id): 
----------------------------------------------------------- 
2 - (cmp=2; cpy=2,3) "M".ROWID[ROWID,10], "M"."USER_ID"[CHARACTER,36], 
"M"."USER_NAME"[VARCHAR2,64], "USER_ISSYSTEM"[CHARACTER,1], 
"USER_STATUS"[CHARACTER,1] 
55 rows selected.

6、查询SQL语句74j1zd36h4n96要保留的数据量

SQL> select count(*) from mw_sys.mwt_is_user where user_id ='0D3C0ACD-C95B-42DA-A5DE-70F019DAB52B'; 

COUNT(*) 
---------- 

SQL> 
SQL> select count(*) from mw_sys.mwt_is_user where user_id ='8697D72E-C77B-4C70-A434-ED7D488ADC36'; 
COUNT(*) 
---------- 
1

7、查看SQL语句74j1zd36h4n96要删除的数据量

SQL> select count(*) from mw_sys.mwt_is_user m where m.user_id not in('0D3C0ACD-C95B-42DA-A5DE 
-70F019DAB52B','8697D72E-C77B-4C70-A434-ED7D488ADC36'); 2 
COUNT(*) 
---------- 
18740

8、问题

   由以上信息可知,24个会话分布在两个节点上通知对同一张表执行相同的delete操作,而且删除的数据量是大范围的,只保留2条记录,

因此导致严重的enq:TM锁。

9、建议

    delete操作分批执行,且控制会话间执行的delete语句删除的数据没有交集。

 

 

</article>

与[转帖]oracle 11.2.0.4 rac集群等待事件enq: TM - contention相似的内容:

[转帖]oracle 11.2.0.4 rac集群等待事件enq: TM - contention

近期,一金融客户oracle 11.2.0.4 rac集群delete不当导致等待事件enq: TM - contention严重引起大范围会话堆积,记录的相关分析工作如下。 1、登录集群任意节点,查看集群全局等待事件 SQL> select event,count(*) from gv$sessi

[转帖]Oracle大页未正常使用导致大量SWAP案例分析

http://blog.itpub.net/30310891/viewspace-2927363/稀奇古怪的.. 故障背景 某次,用户反馈一套已经正常运行一段时间的 Oracle 11.2.0.4 RAC 数据库( 128G 物理内存),在调整 process 阈值之后, R AC 集群中其中一个节

[转帖]Oracle如何重启mmon/mmnl进程(AWR自动采集)

https://www.cnblogs.com/jyzhao/p/10119854.html 学习一下 环境:Oracle 11.2.0.4 RAC现象:sysaux空间满导致无法正常生成快照,清理空间后,手工生成快照可以成功,但是观察自动生成快照依然是不成功。之前了解到awr对应的相关后台进程是m

[转帖]Oracle数据库常用查询语句

1、[oracle@dbserver ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 15 15:16:03 2022Copyright (c) 1982, 2013, Oracle. All rig

[转帖]NUMA导致的Oracle性能问题

https://www.cnblogs.com/realcp1018/p/6903721.html 背景简介: Oracle版本:11.2.0.4 OS 版本:OEL5.8 在一次Oracle的Dataguard正常switchover过程中,遇到了一个极其诡异的问题,一条主业务的SQL语句在新主库

[转帖]Oracle打开审计

0、审计安装11g默认是开始审计的,有审计记录,所以不需要安装,如果查询发现表不存在,则需要安装。使用此命令安装即可,安装完成后重启数据库。SQL> @/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/cataudit.sql;1、开启审计SQL> al

[转帖]TNS-12535 TNS-00505的处理方法

硬件说明: 操作系统版本:ORACLE LINUX 6.3 64位 数据库版本:11.2.0.3 64位 问题说明: 在检查数据库的alert日志的时候,发现大量的12170和TNS-12535的错误; Fatal NI connect error 12170. VERSION INFORMATIO

[转帖]警惕Oracle数据库性能“隐形杀手”——Direct Path Read

一、 简介 Oracle 的11g版本正式发布到今天已经10年有余,最新版本也已经到了20c,但是Direct Path Read(直接路径读)导致性能问题的案例仍时有发生,很多12c的用户还是经常遇到这个问题,所以有必要把这个事情再跟大家讲一遍,通过2个典型案例加深理解。 早在2012年,盖国强大

[转帖]【技术剖析】3. Java Flight Recorder - 事件机制详解

https://bbs.huaweicloud.com/forum/thread-144149-1-1.html 作者:冯世杰 编者按:Java Flight Recorder(简称为JFR)曾经是Oracle JDK商业版的附属组件,在JDK 11中被正式开始开源,后又被移植到JDK8中。JFR本

[转帖]Oracle Linux 9 - Oracle 提供支持 RHEL 兼容发行版

https://sysin.org/blog/oracle-linux-9/ Oracle Linux 是一个开放、全面的操作环境,提供虚拟化、管理、云原生计算工具和操作系统,通过一个统一的支持解决方案满足您的业务需求。Oracle Linux 与 Red Hat Enterprise Linux