MMON进程未自动重启导致awr未生成

问题现象

今天在生成一套rac的awr报告时,发现只有一号节点的数据,这是一套11.2.0.4的rac。

1
2
3
sys@TFDW1> select * from Dba_Hist_Snapshot where instance_number=2;

未选定行

查看mmon进程信息,发现二号节点并没有这个进程

1
2
3
[root@tfdw2 ~]# ps -ef|grep mmon
grid 38361 1 0 Feb24 ? 01:30:51 asm_mmon_+ASM2
root 126466 126429 0 16:04 pts/1 00:00:00 grep mmon

而一号节点是正常的

1
2
3
4
[root@tfdw1 ~]# ps -ef|grep mmon
grid 37050 1 0 Dec10 ? 00:03:04 asm_mmon_+ASM1
oracle 53834 1 0 Dec10 ? 00:12:44 ora_mmon_tfdw1
root 79038 42730 0 16:04 pts/0 00:00:00 grep mmon

要知道mmon进程属于可以被pmon respawned的进程之一,也就是pmon会监控这些进程的运行状况,发现异常则会进行重启,而现在的现象确实进程不存在。

查看alert日志:

1
2
3
Receiver: inst 1 binc 429508292 ospid 52558
IPC Send timeout to 1.4 inc 4 for msg type 65518 from opid 16
IPC Send timeout detected. Sender: ospid 51409 [oracle@tfdw2 (MMON)]

想起来了是之前单独重启过一号实例,二号实例给一号实例发送通信信息时,返回超时(默认300s)。

查看MMON日志

1
2
3
4
5
6
7
8
9
10
11
12
DDE rules only execution for: ORA 12751
----- START Event Driven Actions Dump ----
---- END Event Driven Actions Dump ----
----- START DDE Actions Dump -----
Executing SYNC actions
Executing ASYNC actions
----- START DDE Action: 'ORA_12751_DUMP' (Sync) -----
Runtime exceeded 300 seconds
Time limit violation detected at:
ksedsts()+465>-kspol_12751_dump()+145>-dbgdaExecuteAction()+1065>-dbgerRunAction()+109>-dbgerRunActions()+4134>-dbgexPhaseII()+1873>-dbgexProcessError()+2680>-dbgeExecuteForError()+88>-dbgePostErrorKGE()+2136>-
dbkePostKGE_kgsf()+71>-kgeselv()+276>-ksesecl0()+162>-ksucin()+147>-kjuinq()+2316>-ksiinqi()+245>-ksqinq()+448>-kclriprog()+45>-ktucloRacMasterAction()+479>-ktucloRacAction()+861>-ksb_run_managed_action()+384>-ksbcti()+852>-ksbabs()+1735>-kebm_mmon_main()+209>-k
sbrdp()+1045>-opirip()+623>-opidrv()+603>-sou2o()+103>-opimai_real()+250>-ssthrdmain()+265>-main()+201>-__libc_start_main()+253Current Wait Stack:

看起来就是通信异常,导致在reconfig的时候进程异常被pmon终止了。

现在问题时在通信恢复以后为什么进程没有重新启动。

MOS上可以查到是个bug

Bug 19565533 – MMON/MMNL CAN NOT BE AUTOMATICALLY RESTARTED AFTER KILLED

The issue only occurs on 11.2.0.4 and is a regression of the fix for Bug 14213856

解决办法

  • 打补丁patch 19565533
  • 绕过办法:
    • 重启实例

    • alter system enable restricted session;

      alter system disable restricted session;

Tips:启用restricted模式后,应用新连接数据库的会话将直接报错ORA-12526无法连接