Tengo una base de datos de prueba que es un sistema RAC de 2 nodos. Estoy trabajando para lograr el objetivo de llevar la base de datos de producción a Oracle 12.1.0.2 en aproximadamente un mes. Por supuesto, esto significa que tengo que actualizar Grid Infrastructure antes de la actualización de db. He actualizado GI en mi clúster en espera y también en mi base de datos de prueba. La actualización de GI principal está programada para esta noche.
Desde que actualicé GI en Test hace unas semanas, he estado recibiendo alertas de EM12c similares a las siguientes:
Host=host01
Tipo de destino=Clúster
Nombre del objetivo=examen de prueba
Categorías=Empresa
Message=El servidor tiene una presión de memoria elevada y se detendrán los servicios en todas las instancias de este servidor
Gravedad=Advertencia
Hora del evento informado=29 de julio de 2015 1:05:13 p. m. CDT
Sistema Operativo=Linux
Plataforma=x86_64
Tipo de evento=Alerta de métrica
Nombre del evento=wlm_event:wlm_qosm_mpa_risk_state
Grupo de métricas=Eventos de calidad del servicio
Metric=Estado de riesgo de análisis de presión de memoria
Valor métrico=ROJO
Algunos de los detalles de la alerta se eliminaron por razones de brevedad.
Entonces, ¿de dónde viene esto? ¿Por qué significa para mí?
Este error proviene de la calidad de servicio (QoS) de Oracle en la infraestructura de cuadrícula. Se basa en la información de Cluster Health Monitor (CHM). Más específicamente, esta alerta proviene de Memory Guard. Para obtener información sobre Memory Guard, consulte este PDF, específicamente al final de la segunda página.
Memory Guard está tratando de salvarme de mí mismo y, como veremos, no lo está haciendo bien. La idea es que cuando el servidor tiene presión de memoria, Memory Guard dejará fuera de servicio cualquier servicio en ese nodo. Permitir más conexiones consumiría aún más memoria y podría empeorar la situación. Las nuevas solicitudes de conexión deben ir a otro nodo en el clúster que ejecuta ese servicio. Esto es exactamente lo que me dice el valor del mensaje en la alerta.
De acuerdo con este documento EM 12c, sección 4.3.2, Estado de riesgo de análisis de presión de memoria, se supone que el texto de alerta contiene el nombre del servidor. Sin embargo, el texto del mensaje anterior no me dice qué servidor tiene el problema. Afortunadamente para mí, es solo un clúster RAC de 2 nodos, por lo que no tengo demasiados para examinar.
Cuando miro la utilización de la CPU, todo está bien. El uso de intercambio es prácticamente nulo en ambos nodos. La memoria libre es más del 25 % en ambos nodos. Curioso... ¿por qué la alerta en primer lugar?
Cada vez que recibo esta alerta, recibo otro correo electrónico que dice que la condición se solucionó en unos minutos. Así que el problema es de corta duración. Sin embargo, las alertas siguen llegando.
Resulta que, después de algunas investigaciones, Oracle realizó un cambio en Memory Guard en Grid Infrastructure 12.1.0.2. En versiones anteriores, Memory Guard solo se ocupaba de las bases de datos administradas por políticas. En GI 12.1.0.2, Memory Guard también comenzó a cuidar las bases de datos administradas por administradores. Y mis bases de datos de RAC generalmente están administradas por administradores, que es una de las razones por las que estoy viendo esto ahora.
Para agregar más al problema, aparentemente, GI 12.1.0.2 ha conocido el error 1582630 donde la cantidad de memoria libre se calcula incorrectamente. La nota 1929994.1 enumera una solución alternativa y también hay un parche. Apliqué la solución alternativa y resolvió mi problema. Aplicaré el parche a Prueba antes de proceder a la producción en un futuro no muy lejano.
Afortunadamente, descubrí esto antes de mi actualización de GI de producción más tarde esta noche. De lo contrario, habría molestado a los usuarios finales que podrían haber experimentado problemas para conectarse a la base de datos. Este es solo un ejemplo más de por qué tengo una buena plataforma de prueba con la que descubrir y resolver los problemas antes de que se realice el cambio en producción.