alert日志里发现
Suspending MMON slave action kermrfsa_ for 82800 seconds
mmon的trc
KEWRAFC: Flush slave failed, AWR Enqueue Timeout
手动建快照点
exec dbms_workload_repository.create_snapshot;
等待为
reliable message
reliable message的方法
在 v e v e n t n a m e 视图中,我们可以找到该事件的三个参数的含义,三个参数分别代表 c h a n n e l c o n t e x t , c h a n n e l h a n d l e , b r o a d c a s t m e s s a g e ,获得这三个参数,就能够做出一定的判断: S Q L > s e l e c t n a m e , p a r a m e t e r 1 , p a r a m e t e r 2 , p a r a m e t e r 3 f r o m v event_name 视图中,我们可以找到该事件的三个参数的含义,三个参数分别代表 channel context ,channel handle ,broadcast message,获得这三个参数,就能够做出一定的判断: SQL> select name,parameter1,parameter2,parameter3 from v eventname视图中,我们可以找到该事件的三个参数的含义,三个参数分别代表channelcontext,channelhandle,broadcastmessage,获得这三个参数,就能够做出一定的判断:SQL>selectname,parameter1,parameter2,parameter3fromvevent_name where name=‘reliable message’;
NAME PARAMETER1 PARAMETER2 PARAMETER3
reliable message channel context channel handle broadcast message
例如:在出现等待时,通过以下查询,获得 reliable message 的 P1 参数:
select to_char(p1, ‘XXXXXXXXXXXXXXXX’) event_param,
count(), sum(time_waited/1000000) time_waited
from gv$active_session_history
where event = ‘reliable message’
group by to_char(p1, ‘XXXXXXXXXXXXXXXX’)
order by time_waited desc
EVENT_PARAM COUNT() TIME_WAITED
3CCF8A1D8 572 904.548231
3CCF96200 109 69.145101
3CCF9AFF0 54 23.987554
通过 x$ksrcdes 可以找到 P1 参数代表的通道信息:
RBR channel
进一步的通过 GV$CHANNEL_WAITS 可以查看数据库的各种类等待。
SELECT CHANNEL,
SUM(wait_count) sum_wait_count
FROM GV$CHANNEL_WAITS
GROUP BY CHANNEL
ORDER BY SUM(wait_count) DESC;
CHANNEL SUM_WAIT_COUNT
Result Cache: Channel 429264591
这个问题是结果集缓存的Bug导致的,Bug号为19557279,该问题在Oracle 12.2版本中修复。参考:
Very High Waits for ‘reliable message’ After Upgrade to 11.2.0.4 When Using Result Cache (Doc ID 1951729.1)
如果未使用结果集缓存特性,可以通过临时关闭来解决:
SQL> alter system set result_cache_max_size=0;
System altered.
最终发现
MMON remote action broadcast channel
kill掉mmon进程
启停限制会话(会造成业务连不进来一下)
ALTER SYSTEM enable restricted session;
ALTER SYSTEM disable restricted session;