waited too long for a row cache enqueue lock 诊断-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3502840
  • 博文数量: 718
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7790
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(718)

文章存档

2024年(4)

2023年(74)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

最近访客
相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: oracle

2022-03-26 16:02:04

告警日志中看到这个信息,往往心情一沉

你应当知道的是
通常情况下, row cache enqueue 是一系列事件的一部分,阻塞了申请 row cache enqueue 的进程的进程很可能被另一个进程阻塞。row cache enqueue 经常是问题的表象。

还应当知道的是:
当达到阈值会引发 "waited too long for a row cache enqueue lock!" 这个消息,因此,如果未达到阈值它不会被引发。这意味着,不太严重的问题,即使具有相同的原因,也可以不输出该消息。

概念:
行缓存(row cache)或数据字典缓存(data dictionary cache)是保存数据字典信息的共享池的内存区域。row cache 保存数据时并不是以数据块的形式,而是以行的形式。row cache enqueue 锁是在数据字典行的锁。此 enqueue 是关于特定数据字典对象的。这就是所谓的 enqueue 类型,可以在视图 v$rowcache 中找到。

缘由:
当我们试图获得 row cache 锁,这种等待事件将被使用。
当 row cache 冲突发生时,如果不能在一个预定的时间周期内得到 enqueue,将在 user_dump_dest 或 background_dump_dest 目录下生成一个跟踪文件,这取决于是用户还是后台进程创建的跟踪文件。alert.log 通常会相应的更新警告消息和跟踪文件的位置。
数据库检测到核心资源被持有太久并通知管理员,从而让这种情况可以得到解决。这也可能伴随着数据库挂起或变慢。

首要排查:
sga 的shrink/resize
定位这种情况的方法是,有很多'sga: allocation forcing component growth'等待事件,或 awr 的 top 列表有类似等待,以及阻塞等待"waited too long for a row cache enqueue lock!" 的会话在等待'sga: allocation forcing component growth'

或者

  1. alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
  2. set pagesize 900
  3. set linesize 255
  4. col component format a30
  5. col initial_size format a10
  6. col final_size format a10
  7. spool asmm_resize.txt
  8. select start_time, component, oper_type, oper_mode, initial_size/1024/1024 "initial", final_size/1024/1024 "final", end_time
  9. from v$sga_resize_ops
  10. where component in ('default buffer cache', 'shared pool')
  11.  and status = 'complete'
  12. order by start_time, component;
  13. spool off

row cache enqueue 类型:
dc_tablespaces:最可能的原因是新 extent 的分配
dc_sequences:序列缓存太少了,现在比较少见了
dc_users:用户授权
dc_rollback_segments:由于 rollback 段的分配导致的
dc_awr_control:可能是生成awr遇到问题

深入诊断:
当问题发生时,错误会记入 alert.log,并自动产生一个 systemstate dump 文件(多贴心,国产库好好学学),还需要3a报告,19c的库一个awr即可(一键三连了)。


  1. col parameter for a32
  2. col type for a12

  3. select * from (select parameter,cache#,count,gets,getmisses from v$rowcache order by getmisses desc) where rownum<11

  4. select cache#,parameter,type,subordinate#,count,round(getmisses/gets*100,1) miss_percent from v$rowcache where cache#=&cache;


示例:



参考:
故障排除:"waited too long for a row cache enqueue lock! " (doc id 2016422.1)
阅读(975) | 评论(0) | 转发(0) |
0

上一篇:alert.log 小技巧

下一篇:4031 不要怕

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图