手工启动MMON进程
1. 故障现象
#某帅哥接到业务人员反映系统缓慢,RAC环境
#生成AWR报告发现节点1没有数据
#查询快照视图,发现只有节点1没有快照记录,节点2正常存在快照记录
SYS > select INSTANCE_NUMBER,count(*) from dba_hist_snapshot group by INSTANCE_NUMBER;
#思考:如果两个节点都没有快照,考量的方向可能原因:快照关闭了
【#查询视图
SYS > select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
754170409 +40150 00:00:00.0 +00008 00:00:00.0 DEFAULT
#关闭awr快照命令
SYS > begin DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(11520,0); end;
#调整快照间隔30分钟及保留5天
exec dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>5*24*60); 】
#通过查询MMON进程发现,在节点一的系统上,没有MMON进程服务,因此判断,由于MMON进程未正常启动,导致AWR快照无法生成,缺失快照信息
ps -ef|grep mmon |grep -v grep
2. 什么是MMON进程
管理监控进程 MMON||MMOL
MMON通过AWR间隔时间,将视图信息写入快照中
MMIL通过AWR间隔时间,将缓冲区中ASH写满,写入磁盘中
3. 模拟MMON进程缺失
[root@enmo ~]# ps -ef|grep mmon |grep -v grep
oracle 16947 1 0 Apr13 ? 00:00:08 ora_mmon_ENMO
#KILL MMON进程
[root@enmo ~]# kill -9 16947
[root@enmo ~]# ps -ef|grep mmon |grep -v grep
#手工创建一个快照
SYS > begin
dbms_workload_repository.create_snapshot();
end;
/
PL/SQL procedure successfully completed.
#再次查询进程
[root@enmo ~]# ps -ef|grep mmon |grep -v grep --并未启动
4. 手工启动MMON进程
SYS > alter system enable restricted session;
[root@enmo ~]# ps -ef|grep mmon |grep -v grep
oracle 21960 1 0 20:18 ? 00:00:00 ora_mmon_ENMO
SYS > alter system disable restricted session;
[root@enmo ~]# ps -ef|grep mmon |grep -v grep
oracle 21960 1 0 20:18 ? 00:00:00 ora_mmon_ENMO
#如果能重启数据库,重启集群,重启系统都可以实现,但是操作细腻度最小,执行上述操作