Oracle如何重启mmon/mmnl进程(AWR自动采集)

环境:Oracle 11.2.0.4 RAC
现象:sysaux空间满导致无法正常生成快照,清理空间后,手工生成快照可以成功,但是观察自动生成快照依然是不成功。
之前了解到awr对应的相关后台进程是mmon,那么如何重启这个mmon进程呢?
起初我误以为是这种非核心进程是kill掉会自动启动,实际在实验环境中测试发现杀掉mmon进程并不会再自动起来。
那想启动mmon进程难道要重启数据库吗?当然,重启数据库自然是可以实现重启mmon的目的,但是这对于绝大多数的生产环境来说,如果为这样的需求去申请重启数据库都是几乎不可接受的。
下面我在实验环境做一个实际的演示:

当前节点mmon进程的信息如下:

[oracle@db01 ~]$ ps -ef|grep _mmon|grep -v grep
grid      5471     1  0 Dec13 ?        00:00:07 asm_mmon_+ASM1
oracle    7476     1  0 12:09 ?        00:00:05 ora_mmon_orcl1

正确重新启动mmon的方法是在业务闲时启用restricted模式,再立马禁用:

alter system enable restricted session;
alter system disable restricted session;   

为了尽可能的减少设置restricted模式带来的影响,所以建议最好两个语句一起复制执行。
Tips:启用restricted模式后,应用新连接数据库的会话将直接报错ORA-12526无法连接,直到禁用restricted模式后才可以恢复,具体现象如下:

[oracle@rac1-server ~]$ sqlplus jingyu/jingyu@192.168.1.107/orcl

SQL*Plus: Release 10.2.0.5.0 - Production on Fri Dec 14 15:33:58 2018

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

ERROR:
ORA-12526: TNS:listener: all appropriate instances are in restricted mode

再去观察mmon进程已经正常重启:

[oracle@db01 ~]$ ps -ef|grep _mmon|grep -v grep
grid      5471     1  0 Dec13 ?        00:00:07 asm_mmon_+ASM1
oracle   15298     1  0 15:33 ?        00:00:00 ora_mmon_orcl1

可以看到,ora_mmon_orcl1进程的启动时间由12:09变为15:33,说明是已经成功重启了。再去观察自动生成快照已经正常。
补充说明:
后续了解到,其实除了mmon进程外,还有一个mmnl进程也是随着一起重启的。
关于这两个进程和awr的具体关系描述,可以参考eygle的文章,引用如下:

在Oracle10g中,有两个后台进程是新增的,这里我想说的是MMON和MMNL。

在Oracle不同的文档中,对这两个进程的解释存在歧义。
MMON 应该是 Memory Monitor 的缩写,但是在有的文档中被记录为Manageability Monitor ,这应当是10g早期版本中的称呼,只不过后来发生了变更。
这个进程的主要作用如下:
The memory monitor (MMON) process was introduced in 10g and is associated with the Automatic Workload Repository new features used for automatic problem detection and self-tuning. MMON writes out the required statistics for AWR on a scheduled basis.
另外一个进程是 MMNL ,是 Memory Monitor Light (MMNL) 的缩写,在部分文档中记录为 Manageability Monitor Light .
这个进程的作用如下:
The Memory Monitor Light (MMNL) process is a new process in 10g which works with the Automatic Workload Repository new features (AWR) to write out full statistics buffers to disk as needed.

可以看到,mmon和mmnl这两个后台进程在Oracle 10g就已经随着AWR一起引入,作用都与awr自动收集相关。

This entry was posted in Oracle故障处理 and tagged , , . Bookmark the permalink.