首页 > 其他分享 >latch: row cache objects等待dc_rollback_segments的处理

latch: row cache objects等待dc_rollback_segments的处理

时间:2023-02-25 16:32:19浏览次数:46  
标签:rollback segments cache UNDO objects SQL ---------- row


上午有客户遇到UNDO空间问题导致的latch: row cache objects (dc_rollback_segments ),经排查为节点2的UNDO表空间使用率100%,大部分为UNEXPIRED状态的UNDO段。虽然UNDO表空间的数据文件支持自动扩展,还是出现严重的等待,DML操作均很缓慢,通过人工扩大UNDO表空间后恢复正常;整个排查思路总体为:

1.反映数据库慢时,对当前活动会话、等待事件的排查,找出锁或异常等待事件对应的进程,再进一步分析(此步骤可以同步收集AWR,或通过ASH来确定问题开始时间)。

2.根据等待事件latch: row cache objects (dc_rollback_segments )进一步分析UNDO的配置,如undo表空间的不同状态段的大小分布、undo_retention及其它UNDO_TUNE相关参数的检查。

3.确认UNDO问题后扩容,问题恢复。

4.之后分析UND中存在大量UNEXPIRED状态段的原因。如何分析?DML肯定产生REDO日志或BLOCK CHANGE,因此可以通过查看REDO日志产生量(归档日志),BLOCK CHANGE来定位出某个时间点事务量大;再分析此时间段的AWR/ASH来排查大的事务操作(如查AWR的Segments by DB Blocks Changes中表)是人为或业务的等思路。

1.查询等待事件
SQL> select inst_id,event,count(1) from gv$session where wait_class#<> 6 group by inst_id,event order by 1,3;

INST_ID EVENT COUNT(1)
---------- -------------------------------------------------- ----------
1 enq: SV - contention 1
1 DFS lock handle 1
1 enq: TX - row lock contention 2
1 gc cr request 2
1 SQL*Net break/reset to client 3
1 SQL*Net message to client 6
2 SQL*Net message from dblink 1
2 DFS lock handle 1
2 CGS wait for IPC msg 1
2 enq: TX - row lock contention 1
2 enq: US - contention 1
2 SQL*Net break/reset to client 1
2 gc cr request 1
2 enq: SV - contention 1
2 latch free 2
2 SQL*Net message to client 2
2 latch: row cache objects 104

17 rows selected.

2.查询latch: row cache objects的P1值找出对应的LATCH NAME:dc_rollback_segments
SQL> select count(*),P1RAW from gv$session where event = 'latch: row cache objects' group by P1RAW;

COUNT(*) P1RAW
---------- ----------------
106 0000003A542DFA10

SQL> SELECT
2 kqrsttxt PARAMETER,
3 -- kqrstcid CACHE#,
4 kqrstcln "Lchild#",
5 kqrstgrq "DCGets",
6 l.gets "LGets",
7 l.misses "Misses"
8 FROM X$KQRST, V$LATCH_CHILDREN l
9 WHERE l.addr='&P1RAW'
10 and l.child#=KQRSTCLN
11 ORDER BY 1,2
12 ;
Enter value for p1raw: 0000003A542DFA10
old 9: WHERE l.addr='&P1RAW'
new 9: WHERE l.addr='0000003A542DFA10'

PARAMETER Lchild# DCGets LGets Misses
-------------------------------- ---------- ---------- ---------- ----------
dc_rollback_segments 1 765040834 4272819637 2783160470

SQL> select * from V$LATCHHOLDER;

PID SID LADDR NAME GETS
---------- ---------- ---------------- ---------------------------------------------------------------- ----------
39 7333 0000003A542DFA10 row cache objects 4293097299
1974 10193 0000003B3E90ACC8 cache buffers chains 70589673
2186 4908 0000003B3DD03800 cache buffers chains 36715147
2318 14665 0000003ACB82E6C8 cache buffers chains 97856295
2567 1372 0000003A542DFA10 row cache objects 4293097807

3.查UNDO配置
SQL> SQL> show parameter undo

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_gc_undo_affinity boolean FALSE
_highthreshold_undoretention integer 259200
_undo_autotune boolean FALSE
undo_management string AUTO
undo_retention integer 259200
undo_tablespace string UNDOTBS2
Tablespace_Name Size(GB) Status Used Extents US_SIZE(GB) Used R
--------------- --------- ---------- ------------ ----------- ------
UNDOTBS1 111.00 ACTIVE 211 .22 .19
UNDOTBS1 111.00 EXPIRED 50830 36.44 32.75
UNDOTBS1 111.00 UNEXPIRED 35975 31.1 27.96
UNDOTBS2 58.00 ACTIVE 239 .19 .32
UNDOTBS2 58.00 EXPIRED 12200 2 3.46
UNDOTBS2 58.00 UNEXPIRED 141196 52.18 90.11

4.查undo_retention 时间范围内具体哪个时间点的事务量大,从而找出对应的问题程序或SQL语句/表名等~~,排查思路见开头,SQL就省略了。

标签:rollback,segments,cache,UNDO,objects,SQL,----------,row
From: https://blog.51cto.com/u_1652968/6085592

相关文章

  • 基于tmpfs 的nginx cache 优化
    昨天简单说明了下基于tmpfs的nginxproxy_cache优化,今天整体说明下参考图  流程说明修改之前的对于nginx使用了多级处理,ingress(也是基于nignx,openresty),对于......
  • Token cache serialization Azure AD
    ModernauthenticationwithAzureADforWinForms(native)apps(cmatskas.com)Atthispointeverythingshouldresolvefineapartfromthe'TokenCacheHelper'.T......
  • 使用tempfs 进行nginx proxy_cache 加速
    实际碰到的一个问题,使用的虚拟机,发现压测效果不是很好,静态资源请求有时都会存在问题(超时,加载比较慢)但是因为实际没有太好的虚拟机存储可以挂载,同时请求的静态资源比较多(......
  • MyBatis-RedisCache源码分析
    回顾在前面,我们通过redis​集成了MyBatis​的二级缓存,440.MyBatis的二级缓存整合redis,接下来,我们来分析一下RedisCache​的源码。源码分析RedisCache主要是通过......
  • SpringBoot的开启缓存@EnableCaching 和 使用缓存@Cacheable
    springboot中的缓存注解支持Spel表达式,因此这里展示常用的SpEL表达式1、开启缓存@EnableCachingimportorg.springframework.boot.SpringApplication;importorg.sp......
  • Memcached与Redis有什么区别
    Redis和Memcached都是基于内存的数据存储系统。Memcached是高性能分布式内存缓存服务,其本质上就是一个内存key-value数据库。Redis是一个开源的key-value存储系统。与......
  • JAVA中使用最广泛的本地缓存?Ehcache的自信从何而来3 —— 本地缓存变身分布式集群缓存
    大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。上......
  • JAVA中使用最广泛的本地缓存?Ehcache的自信从何而来2 —— Ehcache的各种项目集成与使
    大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。在......
  • ASUS RAMCache 使用教程
    硬盘加速软件,华硕出品,该版本为解除限制版,任何电脑都可以使用。安装好ASUSRAMCache软件后,先不要重新启动,复制解除限制的补丁文件,打开安装目录,默认是C:\ProgramFiles(......
  • Linux 系统中缓存行cacheline
    为了解决计算机系统中主内存与CPU之间运行速度差问题,会在CPU与主内存之间添加一级或者多级高速缓冲存储器(Cache)。这个Cache一般是被集成到CPU内部的,所以也叫CPUCache,如图......