暂无图片
请教各位大神,最近业务反馈卡顿,可疑时间段的等待事件log file sync和enq: TM - contention
我来答
分享
暂无图片 匿名用户
请教各位大神,最近业务反馈卡顿,可疑时间段的等待事件log file sync和enq: TM - contention

AWR如下:

我看平均等待事件enq: TM - contention的高,

log file parallel write 和log file sync 都再10以内ms应该是不算高的吧

在数据库上面我通过ash定位阻塞会话,持有enq: TM - contention等待事件的会话最终阻塞都定位到lgwr进程持有log file parallel write。

我疑惑的:

1、是不是log file parallel write导致的enq: TM - contention,是不是把redo日志换到高性能的磁盘后enq: TM - contention也就被解决的?


2、还是log file parallel write和enq: TM - contention两者并没有关系,我应该最重排查enq: TM - contention?


但是根据awr信息log file parallel write 和log file sync 都在10以内ms是不是说明io是满足需求,又跟上面换磁盘的方法又产生了冲突。。。

请各位大佬指教一下,不胜感激,生产环境cpu:16c,内存32g,数据库版本11g

toevent

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
lianR

enq:  TM  -  contention通常是由于事务处理过程中的并发问题引起的,而不是由于I/O性能问题。这种等待事件通常发生在一个会话试图锁定一个表,而另一个会话已经在使用这个表。这可能是由于并发的DML操作(如INSERT,UPDATE,DELETE)或并发的DDL操作(如ALTER  TABLE,DROP  TABLE等)引起的。

log  file  parallel  write和log  file  sync是与redo日志写入相关的等待事件。log  file  parallel  write是将redo日志缓冲区的内容写入到磁盘的redo日志文件中,而log  file  sync是等待redo日志写入到磁盘的操作完成。这两个等待事件的性能主要取决于磁盘的I/O性能。

所以,你的问题1,log  file  parallel  write不太可能导致enq:  TM  -  contention。把redo日志换到高性能的磁盘可能会改善log  file  parallel  write和log  file  sync的性能,但不太可能解决enq:  TM  -  contention的问题。

你的问题2,log  file  parallel  write和enq:  TM  -  contention两者并没有直接的关系。你应该主要排查enq:  TM  -  contention的问题。

你的AWR报告显示log  file  parallel  write  和log  file  sync  的等待时间都在10以内ms,这通常被认为是正常的,说明你的I/O性能应该是满足需求的。

暂无图片 评论
暂无图片 有用 3
打赏 0
广州_老虎刘

没有使用ssd盘, log file sync 这个速度也是正常; 

 log file sync 会影响enq:  TM  -  contention, 但是平均等待10毫秒, 不会导致enq:  TM  -  contention 平均等待185毫秒;

主要矛盾应该还是行锁相关语句: 有些update 语句从发起到commit的这个过程比较长, 其他session的update 在等行锁(enq: Tx - row lock contention) , 还有session的insert /*+ append */ 在等表锁(enq:  TM  -  contention).

还有可能是并发的insert /*+ append */导致了enq:  TM  -  contention

上面两种是大概率情况, 可能还有其他情况, 那就需要分析ash了

暂无图片 评论
暂无图片 有用 1
打赏 0
张sir

你把awr和ash发上来,看下

暂无图片 评论
暂无图片 有用 0
打赏 0
黄伟波

看下AWR报告里面的top sql

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
请教有没有大神可以解决一下nodejs查询字符集是gbk的Oracle数据库时产生的乱码问题?
回答 2
已采纳
可以尝试修改数据库字符集。
打了220218,p33488457的补丁,为啥还能扫出来2020年之前的一堆漏洞?
回答 2
我猜是绿盟吧,业界毒瘤。http://rss.xifenfei.com/关于绿盟扫描ORACLE漏洞的问题说几点看法.htmlhttps://www.modb.pro/db/6019
windows下安装oracle19c rac的问题
回答 3
已采纳
你把Windows的禁用驱动程序强制签名开启了【win10系统需要驱动数字签名如何操作win10需要数字签名的驱动程序解决方法win7之家】https://mip.win7zhijia.cn/win1
求一个红帽7生成oracle udev.rule的脚本。谢谢各位
回答 2
已采纳
供ASM使用的磁盘为sddsdi,defghi盘为ASM共享盘可以使用lsblk命令查看磁盘信息:lsblkNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTsda8:0020G0di
如何把windows 2008查出来的文件日期插入到oracle数据库中。
回答 9
已采纳
1、先建个表 createtablemodf(modtdate);2、插入bat如下,c:\1.bat为例@echoofffor%%Ain(c:\1.bat)dosetlmd%%tAecho
关于Windows下Oracle11g补丁升级报错的问题
回答 2
有进程还在打开ORACLEHOME下文件,日志里一般会有具体文件,然后再资源监视器里CPU选项看看哪个进程打开了这个文件,结束掉进程,重新opatch
在Oracle中使用rollup函数时,用哪个函数来进行原始列值是“null”的判断?
回答 6
已采纳
仔细读题吧,看清楚题意,“null”
rac 12.2.0.1 on redhat7.4 执行root.sh时遇到 CLSRSC-400 ACFS-9428 OUI-67064
回答 3
上传附件:rootcrsdb0120210331083352PM.log
ogg初始化后,目标端的复制进程未使用源端提供的scn号启动,导致后续更新的数据目标端不同步,进程都是running的,这个得咋弄
回答 1
可以参考下面办法:重新初始化。目标端利用闪回数据库或者可以的话表空间定点恢复也行,如果trail文件还在,重新指定scn应用。配置oggveridata进行比对,空闲时repair。注:第二个办法需要
设置oracle数据库用户密码必须使用大小写+数字+特殊字符,如何解决校验问题?
回答 1
已采纳
oracle里有这几个函数,可以进行密码相关的一些校验ORA12CVERIFYFUNCTIONORA12CSTRONGVERIFYFUNCTIONORA12CSTIGVERIFYFUNCTIONora