Oracle常见UNDO等待事件

来源:这里教程网 时间:2026-03-03 19:00:27 作者:

latch:undo global data通常是undo tablespace datafile达到上限后,DBA_UNDO_EXTENTS.STATUS=EXPIRED 没有或者很少了。 Oracle需要将UN EXPIRED状态变为 EXPIRED后DML才能执行,这是 主要等待时间。 解决方法 修改undo_retention改小,或增加undo datafile enq: US - contention 通常是DML并发 量增加(例: 两节点RAC,一节点业务,一节点空闲,业务节点crash failover到空闲节点后发生此等待), Oracle需从undo tablespace中分配大量online状态的rollback segment供DML操作使用,这是主要等待时间。 解决方法 将_rollback_segment_count 参数设置较大的固定值,比如无脑设置6000alter system set "_rollback_segment_count"=6000 scope=both sid='*'; PS: 可以查看V$UNDOSTAT.MAXCONCURRENCY 这是DB启动后配置过的最大的 rollback_segment_count latch: row cache objects (dc_rollback_segments) 通常是undo tablespace datafile size不足时自动扩展导致, 这是主要等待时间。 解决方法 undo tablespace datafile size调大/多增加几个,并设置为不自动扩展 ,如:alter database datafile '/oradata/orcl/undotbs01.dbf' resize 32767M ;alter tablespace undotbs1 add datafile '/oradata/orcl/undotbs02.dbf' size 32767M autoextend off; 检查latch过程: 通过取ASH中P1 值 select p1 from  v$active_session_history where EVENT='latch: row cache objects' ; 计算P1值十六进制: SELECT to_char(p1,'XXXXXXXXXXXXXX') FROM DUAL; -------------- 123BF1CB9 检查latch对象 SELECT kqrsttxt PARAMETER,        kqrstcid CACHE#,        kqrstcln "Lchild#",        kqrstgrq "DCGets",        l.gets   "LGets",        l.misses "Misses",        l.addr   FROM X$KQRST, V$LATCH_CHILDREN l  WHERE l.addr like  '%123BF1CB9'    and l.child# = KQRSTCLN PARAMETER                            CACHE#    Lchild#     DCGets      LGets   Misses ADDR -------------------------------- ---------- ---------- ---------- ---------  ---------- ---------------- dc_rollback_segments                      3          1   ................ 或: select la.addr laaddr,dc.kqrstcid CACHE#, dc.kqrsttxt PARAMETER,decode(dc.kqrsttyp, 1,'PARENT','SUBORDINATE') type,decode(dc.kqrsttyp, 2, kqrstsno, null) subordinate#,dc.kqrstgrq rcgets, dc.kqrstgmi rcmisses, dc.kqrstmrq rcmodifications,dc.kqrstmfl rcflushes, dc.kqrstcln,la.gets lagets, la.misses lamisses, la.immediate_gets laimgefrom x$kqrst dc,v$latch_children lawhere dc.inst_id = userenv('instance')and la.child# = dc.kqrstclnand la.name = 'row cache objects'and la.ADDR like '%123BF1CB9';

相关推荐