# Solucionando errores de memoria en Oracle Enterprise Manager 13c (OMS_HEAP_MAX y BEA-310003)

En uno de nuestros entornos de Oracle Enterprise Manager (OEM) 13c (Release 5), detectamos que el OMS (Oracle Management Service) se reiniciaba automáticamente sin intervención.

Tras revisar los logs, nos encontramos con el siguiente aviso preocupante:

```plaintext
<Free memory in the server is 52,928 bytes. There is danger of receiving an OutOfMemoryError.>
```

Aunque la máquina tenía memoria física suficiente, el proceso OMS estaba alcanzando su límite de heap Java, configurado con un valor bajo.

**Diagnóstico**

El proceso de OMS se ejecuta como una JVM (Java Virtual Machine), por lo tanto, su uso de memoria está limitado por los parámetros de arranque, típicamente:

\-Xms: heap mínimo

\-Xmx: heap máximo

Al revisar los procesos activos:

ps -ef | grep oms | grep Xmx

Detectamos que estaba usando un heap máximo de apenas 1740M, lo cual es insuficiente para un entorno de producción con cierta carga.

**Solución**

Aumentamos el parámetro OMS\_HEAP\_MAX a 4096M (4 GB), ejecutando lo siguiente:

```plaintext
$OMS_HOME/bin/emctl set property -name OMS_HEAP_MAX -value 4096M
```

Y aplicamos reinicio.

```plaintext
$OMS_HOME/bin/emctl stop oms -all -force 
$OMS_HOME/bin/emctl start oms
```

Después del reinicio, confirmamos que el nuevo valor se aplicó correctamente:

ps -ef | grep oms | grep Xmx

Debería mostrar algo como: -Xmx4096M

**Recursos del sistema**

También confirmamos que la máquina tenía recursos suficientes:

free -m

Resultado:

Mem: 23744 total

Suficiente RAM para aumentar la memoria heap del OMS sin riesgos.

**Conclusión**

Este caso nos recuerda que:

OEM 13c puede consumir bastante heap según la carga.

Un valor bajo de OMS\_HEAP\_MAX puede causar errores BEA-310003 y reinicios del OMS.

Es importante revisar regularmente los logs de WebLogic (server.log, EMGC\_OMS1.out) y ajustar parámetros JVM según el crecimiento del entorno.

**¿Dónde buscar estos logs?**

Los logs relevantes del OMS están aquí:

$OMS\_HOME/gc\_inst/user\_projects/domains/GCDomain/servers/EMGC\_OMS1/logs/

EMGC\_OMS1.out

server.log

Y los específicos de OEM:

$OMS\_HOME/gc\_inst/em/EMGC\_OMS1/sysman/log/emoms.log

¿Has tenido problemas similares con OEM? ¿Cuánto heap tenéis configurado en producción?

### Referencias y Notas de Soporte

* \[MOS 2674369.1\] **How to Increase the Java Heap Size for the Oracle Management Service (OMS) in OEM 13c**
    
* \[MOS 1955854.1\] **OMS Fails with BEA-310003: Free memory in the server is ... There is danger of receiving an OutOfMemoryError**
    
* Documentación oficial OEM 13c – sección *Tuning the OMS Heap Size*
    
* \[MOS 1589136.1\] **How to Modify the OMS Java Heap Size Parameters in Enterprise Manager**
    
* BEA-310003 Error Codes Reference
