Cómo actualizar las referencias al Oracle Home en Oracle Enterprise Manager (OEM) tras un parche OOP sin morir en el intento


Después de aplicar un parche "Out-Of-Place" (OOP) en Oracle, en mi caso para la Grid Infrastructure (GI) la base de datos (BBDD), te enfrentas a una tarea tediosa: actualizar todas las referencias al Oracle Home antiguo en Oracle Enterprise Manager (OEM). Si eres como yo, probablemente no te apetezca pasar horas haciendo clic target por target en OEM, especialmente si tienes un montón de ellos.
La buena noticia es que no tienes que hacerlo todo a mano. Aquí te voy a contar cómo hacerlo mucho más rápido.
Oracle Enterprise Manager mantiene las propiedades de los targets, como la versión de la base de datos y la ruta de Oracle Home. Cuando aplicas un parche OOP, las rutas del Oracle Home cambian, pero OEM puede seguir usando las viejas rutas, lo que genera información desactualizada. Esto podría ocasionar problemas en tus métricas y alertas, así que es importante actualizar esas rutas. La forma "rápida" de hacerlo
¿Quién tiene tiempo para ir target por target en OEM seleccionando manualmente cada uno? Afortunadamente, hay una forma más rápida y eficiente: ¡usando una consulta SQL para generar los comandos necesarios! Así, solo ejecutas un par de líneas y listo, sin necesidad de navegar por la interfaz de OEM.
Aquí te dejo la consulta SQL que usé para generar los comandos que después ejecuté con emcli (la herramienta de línea de comandos de Oracle) en el catálogo de OEM:
SELECT 'emcli modify_target -name=''' || t.target_name || ''' -type=''' || t.target_type || ''' -properties=''' || p.property_name || ':' ||
CASE
WHEN p.property_value = '/u01/app/oracle/product/19.24.0' THEN '/u01/app/oracle/product/19.26'
WHEN p.property_value = '/u01/app/19.24/grid' THEN '/u01/app/19.26/grid'
ELSE p.property_value
END || ''' -on_agent'
FROM
sysman.mgmt_target_properties p,
sysman.mgmt_targets t
WHERE
p.property_name = 'OracleHome'
AND t.target_guid = p.target_guid
AND ( p.property_value = '/u01/app/oracle/product/19.24.0' -- Filtro por referencias al home antiguo
OR p.property_value = '/u01/app/19.24/grid' )
AND upper(t.target_name) LIKE '%XXX%'; -- En mi caso ubico por el nombre de los targets afectados
¿Qué hace esta consulta?
Selecciona los targets afectados: La consulta filtra aquellos targets que siguen apuntando a las versiones antiguas del Oracle Home. Parametriza con tus rutas (antiguas y nuevas), no seas vago.
Genera los comandos emcli: Crea un comando para actualizar cada target con la nueva ruta del Oracle Home.
Agiliza el proceso: En lugar de ir seleccionando y actualizando manualmente cada target en la interfaz de OEM, solo ejecutas los comandos generados. ¡Mucho más rápido!
Ejecución de los comandos
Una vez que la consulta te haya dado los comandos emcli, solo tienes que ejecutarlos en tu terminal y todos los targets se actualizarán en un abrir y cerrar de ojos.
[propietariocc@cloudcontrolhost ~]$ emcli login -username=sysman
Enter password :
Login successful
[propietariocc@cloudcontrolhost ~]$ emcli sync
Synchronized successfully
[propietariocc@cloudcontrolhost ~]$ emcli modify_target -name='has_rac-xxx-002.xxxxxx.local' -type='has' -properties='OracleHome:/u01/app/19.26/grid' -on_agent
Target "has_rac-xxx-002.xxxxxx.local:has" modified successfully
[propietariocc@cloudcontrolhost ~]$ emcli modify_target -name='has_rac-xxx-001.xxxxxx.local' -type='has' -properties='OracleHome:/u01/app/19.26/grid' -on_agent
Target "has_rac-xxx-001.xxxxxx.local:has" modified successfully
[propietariocc@cloudcontrolhost ~]$ emcli modify_target -name='rac-xxx' -type='cluster' -properties='OracleHome:/u01/app/19.26/grid' -on_agent
Target "rac-xxx:cluster" modified successful
...
¿Por qué es tan útil?
En entornos con muchos targets, este enfoque no solo ahorra tiempo, sino que también reduce el riesgo de olvidarse de algún target o cometer un error manual. Es mucho más eficiente y te permite dedicar tu tiempo a otras cosas importantes (como disfrutar de un café). En resumen
Actualizar las referencias al Oracle Home después de un parche OOP no tiene que ser un dolor de cabeza. Usando una consulta SQL para generar los comandos emcli, puedes hacerlo de forma rápida, sin tener que ir target por target en la interfaz de OEM. ¡Automatiza y ahorra tiempo!
NOTA:
Se puede automatizar mediante un script, pero eso ya da para otro café…
Subscribe to my newsletter
Read articles from Carla Muñoz López directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Carla Muñoz López
Carla Muñoz López
Mi nombre es Carla y me defino como una apasionada de conocer, compartir ideas, divertirme y aprender todo lo relacionado con Oracle. Alegre y creativa, con un alto grado de autoexigencia, que busca, incluso sin querer, una forma diferente de ver un mismo problema o solución. Defensora del trabajo en equipo en todas las facetas de la vida y de disfrutar todo lo que haces, siempre con humildad. Actualmente cuento con más de 15 años de experiencia como administradora de Oracle, habiendo ocupado previamente posiciones como desarrolladora en la rama de Inteligencia de Negocios. Fue en ese momento que me di cuenta de que no quería centrarme en el desarrollo, sino participar en todas las capas que involucraban los datos, desde el despliegue de la base de datos hasta su explotación final. Siempre estoy dispuesta a ayudar y compartir conocimientos. Creo firmemente que con la tecnología hay que divertirse y no verla como una competencia. La persona con la que tienes que ser el mejor es contigo mismo.