客户10.2.0.5 RAC环境出现了严重的latch: undo global data等待。
问题时刻AWR的TOP如下:
Event |
Waits |
Time(s) |
Avg Wait(ms) |
% Total Call Time |
Wait Class |
latch: undo global data |
6,245,400 |
1,372,583 |
220 |
22.0 |
Other |
gc buffer busy |
114,190,782 |
1,329,749 |
12 |
21.3 |
Cluster |
enq: TX – row lock contention |
1,377,980 |
685,454 |
497 |
11.0 |
Application |
CPU time |
|
460,041 |
|
7.4 |
|
enq: TX – index contention |
602,648 |
285,683 |
474 |
4.6 |
Concurrency |
等待最明显的是latch: undo global data和gc buffer busy,后者是RAC中比较常见的等待,也可以根据报告后面的SQL等待部分很容易定位到导致问题的SQL语句,而前者的等待并不常见。
根据MOS文档”LATCH: UNDO GLOBAL DATA” In The Top Wait Events [ID 1451536.1]描述,这个等待和隐含参数_undo_autotune设置为FALSE情况下的UNDO空间不足有关
当前数据库确实关闭了_undo_autotune功能。且LATCH undo global data最多的等待发生在ktusm_stealext: KSLBEGIN处,这说明会话在寻找新的UNDO EXTENTS时,不得不Steal未过期的UNDO EXTENTS。
解决方案有三个:减少UNDO_RETENTION参数设置的时间长度;增加UNDO_TABLESPACE的空间大小;将_undo_autotune隐含参数设置为TRUE。