Oracle 11.2.0.4 Não Reinicia os Processos MMON e MMNL Automaticamente – AWR e ASH Pararam de Gerar Snapshots

O cliente reportou que os gráficos do Active Session History (ASH) estavam em branco no Enterprise Manager Cloud Control. No EMCC 13.4, existem 2 cenários comuns que podem impossibilitar a visualização de gráficos do ASH, que são o bug relacionado aos navegadores com idioma que não esteja com Inglês Americano, ou o fato de ainda não ter sido criado a package OMC_ASH_VIEWER no banco de dados sendo monitorado, quando este estiver em uma versão inferior a 18c.

Abaixo a visão do ASH:

O simples fato dessa tela abrir e mostrar o gráfico do Time Range (linha do tempo selecionável), já indica que não é o problema da não existência da package OMC_ASH_VIEWER, assim como indica que o problema não está no navegador (além do fato das outras bases carregarem os gráficos corretamente).

Conectando na instância via SQLPLUS, tentei gerar um relatório do ASH manualmente:

@?/rdbms/admin/ashrpt.sql

O relatório foi gerado sem dados para maioria dos itens, e também alguns dados zerados. Isso indica haver algum problema com mecanismo do ASH no banco de dados, o problema não era no EMCC em si.

Consultando o snapshot mais recente do ASH, veio a maior indicação de problema, as coletas não estavam sendo geradas a alguns dias:

SQL> SELECT TO_CHAR(MAX(SAMPLE_TIME),'DD/MM/YYYY HH24:MI:SS') AS MAX_SAMPLE_TIME 
FROM V$ACTIVE_SESSION_HISTORY;

MAX_SAMPLE_TIME
-------------------
20/05/2021 17:51:00

Verifiquei que os snapshots do AWR também não estavam sendo gerados desde a mesma data e horário:

SQL> SELECT TO_CHAR(MAX(END_INTERVAL_TIME),'DD/MM/YYYY HH24:MI:SS') AS LAST_SNAP 
FROM DBA_HIST_SNAPSHOT 
WHERE INSTANCE_NUMBER=1;

LAST_SNAP
-------------------
20/05/2021 17:40:26

Então olhei para os 2 processos responsáveis por gerar os dados do ASH e AWR, o MMON (Manageability Monitor Lite Process) e MMNL (Manageability Monitor Lite Process), respectivamente.

https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/background-processes.html#GUID-86184690-5531-405F-AA05-BB935F57B76D

Verificando o processo MMON:

$ ps -ef | grep mmon

Deve retornar uma linha para a instância sendo analisada. Por exemplo, se o nome da instância for HML, deveria retornar uma linha contendo “ora_mmon_HML”.

Verificando o processo MMNL:

$ ps -ef | grep mmnl

Os processos não estavam presentes no servidor.

Podemos investigar o conteúdo dos arquivos de trace dos dois processos.

Exemplo de como encontrar os arquivos de trace do processo MMON:

cd <ADR_HOME>/trace
$ ls -lrt *mmon*.trc

Exemplo de como encontrar os arquivos de trace do processo MMNL:

cd <ADR_HOME>/trace
$ ls -lrt *mmnl*.trc

Olhando as últimas linhas do arquivo de trace mais recente do processo MMON:

*** 2021-05-20 17:50:36.889
error 28 detected in background process
OPIRIP: Uncaught error 447. Error stack:
ORA-00447: fatal error in background process
ORA-00028: your session has been killed

E as últimas linhas do arquivo de trace mais recente do processo MMNL:

*** 2021-05-20 17:51:01.338
error 28 detected in background process
OPIRIP: Uncaught error 447. Error stack:
ORA-00447: fatal error in background process
ORA-00028: your session has been killed

As mensagens acima indicam que as sessões no banco de dados referente aos processos MMON e MMNL foram encerradas via “ALTER SYSTEM KILL SESSION”.

O Oracle deveria reiniciar esses processos automaticamente quando eles fosses interrompidos, conforme o teste realizado abaixo com o processo MMON em um Oracle Database 12cR1.

Identificando a sessão do MMON:

SQL&gt; select sid, serial#, program from v$session where program like '%MMON%';

    SID SERIAL# PROGRAM
------- ------- --------------------
   1375   51535 oracle@lab02 (MMON)

SQL&gt; ALTER SYSTEM KILL SESSION '1375,51535' IMMEDIATE;

System altered.

SQL&gt;

No alert log gerou essas mensagens:

Mon Jun 07 18:20:40 2021
Immediate Kill Session#: 1375, Serial#: 51535
Immediate Kill Session: sess: 0x9492b528  OS pid: 2916
Mon Jun 07 18:20:40 2021
Restarting dead background process MMON
Starting background process MMON
Mon Jun 07 18:20:40 2021
MMON started with pid=23, OS id=10301

Mas o ambiente que eu estava investigando estava na versão 11gR2, mais precisamente no patchset 11.2.0.4.

Fazendo uma pesquisa no MOS, encontrei a nota 2023652.1 , indicando haver um bug na versão no Oracle Database 11.2.0.4 em que o processo MMON não é reiniciado automaticamente.

AWR Snapshots Are Not Being Created Because MMON Is Not Being Respawned (Doc ID 2023652.1).

O problema ocorre devido ao bug “19565533 – MMON/MMNL CAN NOT BE AUTOMATICALLY RESTARTED AFTER KILLED” e afeta especificamente a versão 11.2.0.4.

O documento recomenda aplicar o patch 19565533 para evitar esse comportamento. Como solução alternativa para iniciar os processos novamente, sem reiniciar a instância, seria habilitar e desabilitar o modo restrito na instância.

A simução abaixo demonstra esse procedimento:

Matando os processos MMON e MMNL na instância 11gR2:

SQL&gt; select sid, serial#, program from v$session where program like '%MMON%';

       SID    SERIAL# PROGRAM
---------- ---------- ------------------------------------------------
       235          1 oracle@lab01 (MMON)

SQL&gt; ALTER SYSTEM KILL SESSION '235,1' IMMEDIATE;

System altered.

SQL&gt;  select sid, serial#, program from v$session where program like '%MMNL%';

       SID    SERIAL# PROGRAM
---------- ---------- ------------------------------------------------
       467          1 oracle@lab01 (MMNL)

SQL&gt; alter system kill session '467,1' immediate;

System altered.

E no alert log, podemos ver que houve uma entrada referente ao KILL SESSION, mas nada de reiniciar os processos automaticamente:

Mon Jun 07 18:34:15 2021
Immediate Kill Session#: 235, Serial#: 1
Immediate Kill Session: sess: 0x8e63b4e0  OS pid: 9819

Mon Jun 07 18:39:28 2021
Immediate Kill Session#: 467, Serial#: 1
Immediate Kill Session: sess: 0x8e12e7e0  OS pid: 9821

Aguardei alguns minutos e executei o workaround sugerido na nota 2023652.1:

SQL&gt; alter system enable restricted session;

System altered.

SQL&gt; alter system disable restricted session;

System altered.

E no alert log, juntamente com os comandos executados, foi reportado a reinicialização dos processos MMON e MMNL:

Mon Jun 07 18:44:39 2021
Starting background process MMON
Mon Jun 07 18:44:39 2021
MMON started with pid=18, OS id=10857
Starting background process MMNL
Mon Jun 07 18:44:39 2021
MMNL started with pid=24, OS id=10859
ALTER SYSTEM enable restricted session;
ALTER SYSTEM disable restricted session;

Testando a Solução Definitiva

Aplicando o patch 19565533 em modo offline:

[oracle@lab01 ~]$ cd /home/oracle/patch/
[oracle@lab01 patch]$ export PATH=$PATH:$ORACLE_HOME/OPatch
[oracle@lab01 patch]$ unzip p19565533_112040_Linux-x86-64.zip
Archive:  p19565533_112040_Linux-x86-64.zip
   creating: 19565533/
   creating: 19565533/etc/
   creating: 19565533/etc/xml/
  inflating: 19565533/etc/xml/GenericActions.xml
  inflating: 19565533/etc/xml/ShiphomeDirectoryStructure.xml
   creating: 19565533/etc/config/
  inflating: 19565533/etc/config/actions.xml
  inflating: 19565533/etc/config/inventory.xml
  inflating: 19565533/etc/config/deploy.xml
   creating: 19565533/files/
   creating: 19565533/files/lib/
   creating: 19565533/files/lib/libserver11.a/
  inflating: 19565533/files/lib/libserver11.a/kebm.o
  inflating: 19565533/README.txt
   creating: 19565533/online/
   creating: 19565533/online/etc/
   creating: 19565533/online/etc/xml/
  inflating: 19565533/online/etc/xml/ShiphomeDirectoryStructure.xml
  inflating: 19565533/online/etc/xml/GenericActions.xml
   creating: 19565533/online/etc/config/
  inflating: 19565533/online/etc/config/actions.xml
  inflating: 19565533/online/etc/config/inventory.xml
  inflating: 19565533/online/etc/config/deploy.xml
   creating: 19565533/online/files/
   creating: 19565533/online/files/hpatch/
  inflating: 19565533/online/files/hpatch/bug19565533.pch
  inflating: PatchSearch.xml

[oracle@lab01 patch]$ cd 19565533/
[oracle@lab01 19565533]$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./
Oracle Interim Patch Installer version 11.2.0.3.4
Copyright (c) 2012, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle Home       : /u01/app/oracle/product/11.2.0.4/db_1
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/11.2.0.4/db_1/oraInst.loc
OPatch version    : 11.2.0.3.4
OUI version       : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0.4/db_1/cfgtoollogs/opatch/opatch2021-06-07_19-06-02PM_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.


[oracle@lab01 19565533]$ srvctl stop database -d orcl


[oracle@lab01 19565533]$ opatch apply
Oracle Interim Patch Installer version 11.2.0.3.4
Copyright (c) 2012, Oracle Corporation.  All rights reserved.


Oracle Home       : /u01/app/oracle/product/11.2.0.4/db_1
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/11.2.0.4/db_1/oraInst.loc
OPatch version    : 11.2.0.3.4
OUI version       : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0.4/db_1/cfgtoollogs/opatch/19565533_Jun_07_2021_19_07_16/apply2021-06-07_19-07-16PM_1.log

Applying interim patch '19565533' to OH '/u01/app/oracle/product/11.2.0.4/db_1'
Verifying environment and performing prerequisite checks...
All checks passed.

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/u01/app/oracle/product/11.2.0.4/db_1')


Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...

Patching component oracle.rdbms, 11.2.0.4.0...

Verifying the update...
Patch 19565533 successfully applied
Log file location: /u01/app/oracle/product/11.2.0.4/db_1/cfgtoollogs/opatch/19565533_Jun_07_2021_19_07_16/apply2021-06-07_19-07-16PM_1.log

OPatch succeeded.


[oracle@lab01 19565533]$ srvctl start database -d orcl

Realizando nova simulação no laboratório 11gR2 após aplicar o patch:

[oracle@lab01 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory | grep 19565533
Patch  19565533     : applied on Mon Jun 07 19:07:27 BRT 2021

Identificando a matando a sessão do MMON:

SQL&gt; select sid, serial#, program from v$session where program like '%MMON%';

       SID    SERIAL# PROGRAM
---------- ---------- ------------------------------------------------
       235          1 oracle@lab01 (MMON)

SQL&gt; ALTER SYSTEM KILL SESSION '235,1' IMMEDIATE;

System altered.

O alert log indica que o processo foi reiniciado automaticamente, conforme esperado:

Mon Jun 07 19:18:16 2021
Immediate Kill Session#: 235, Serial#: 1
Immediate Kill Session: sess: 0x8e63b4e0  OS pid: 13743
Mon Jun 07 19:18:16 2021
Restarting dead background process MMON
Mon Jun 07 19:18:16 2021
MMON started with pid=17, OS id=14055

Leave a Reply

Scroll to Top

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading