代码改变世界

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

2018-12-14 16:06  AlfredZhao  阅读(...)  评论(...编辑  收藏

环境: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自动收集相关。