AutoUpgrade, mi primer incidente

Como parte de un proyecto de upgrade desde Oracle 11.2 hacia Oracle 19c, el primer paso consiste en ejecutar AutoUpgrade en modo analyze para cada una de las bases de datos a trabajar; algo relativamente fácil, a prueba de balas, o al menos eso creía, porque al primer intento obtuve mensajes de error, en menos de 2 segundos!
java -jar autoupgrade.jar -config dbron.cfg -mode analyze

AutoUpgrade 24.8.241119 launched with default internal options
Processing config file ...
Internal Error has occurred. Please contact Oracle support.
java.lang.IllegalStateException
at oracle.commonx.config.rac.ClusterDetails.findCurrentInstance(ClusterDetails.java:396)
at oracle.commonx.config.rac.ClusterDetails.generateRacOneList(ClusterDetails.java:328)
at oracle.commonx.config.rac.ClusterDetails.getNodeInstanceInfos(ClusterDetails.java:307)
at oracle.commonx.config.rac.ClusterDetails.buildPojo(ClusterDetails.java:433)
at oracle.upgrade.autoupgrade.config.crafter.FullUpgCreator.craft(FullUpgCreator.java:757) 

Revisando el log, se observaba que AutoUpgrade no llegaba siquiera a conectarse a la base de datos. 

¿Qué podría estar pasando? Veamos.

El problema

El cluster sobre el que estaba trabajando está formado por 3 servidores físicos (NODE1, NODE2, NODE3), operando con RHEL 7.9, Oracle Clusterware 19.24, y una decena de bases de datos RAC One Node (también conocido como RON) en Oracle 11.2.0.4.

En el archivo autoupgrade.log se señala que AutoUpgrade aborta al ejecutar el método findCurrentInstance, dentro de la clase ClusterDetails.

2025-01-07 08:20:35.043 WARNING null - Bootstrap.processCLIParams#83 
java.lang.IllegalStateException
    at oracle.commonx.config.rac.ClusterDetails.findCurrentInstance(ClusterDetails.java:396)

De Java no se mucho, pero me asaltó la idea de qué quizás se tratara de algo simple, por lo que busqué en la web un descompilador para poder darle una mirada a la rutina.

Encuentro que dentro de findCurrentInstance se busca si el servidor desde el cual estoy ejecutando AutoUpgrade (que es donde está corriendo la instancia activa de dbron) está dentro de la lista de servidores en los que puede correr la base de datos RON.

Hasta allí parece estar todo dentro de lo normal, entonces ¿por qué la falla?

En el mismo log, líneas antes del error, se observa que la lista de servidores candidatos es: node1 y node2.

2025-01-07 08:20:35.043 INFO RACOne detected - ClusterDetails.generateRacOneList#311 
2025-01-07 08:20:35.043 INFO Starting - ClusterDetails.getCandidateServers#402 
2025-01-07 08:20:35.043 INFO Candidate servers node1,node2 - ClusterDetails.getCandidateServers#405 
2025-01-07 08:20:35.043 INFO Candidates [node1, node2] - ClusterDetails.generateRacOneList#315 

¿Ya se dieron cuenta? Les doy unos minutos para que elaboren sus teorías….

Respuesta: AutoUpgrade está considerando como servidores válidos a node1 y node2, pero los servidores se llaman NODE1 y NODE2.

Como AutoUpgrade y la instancia activa de dbron está siendo ejecutado desde NODE1, esta cadena es buscada en la lista de servidores candidatos node1, node2, y desde luego no lo encuentra y aborta inmediatamente.

La solución

Es inevitable recurrir a Oracle Support y abrir un Service Request.

Adjunto toda la información disponible, y les señalo mis sospechas sobre la comparación de cadenas en mayúsculas y minúsculas, y en pocas horas me proporcionan un nuevo jar el cual ejecuto y listo, todo funciona correctamente!!!

java -jar autoupgrade_custom.jar -config dbron.cfg -mode analyze

AutoUpgrade 25.8.250108 launched with default internal options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 Non-CDB(s) will be analyzed
Type 'help' to list console commands
upg> Job 100 completed
------------------- Final Summary --------------------
Number of databases [ 1 ]

Jobs finished [1]
Jobs failed [0]

Please check the summary report at:
/u01/app/oracle/cfgtoollogs/autoupgrade/dbron/cfgtoollogs/upgrade/auto/status/status.html
/u01/app/oracle/cfgtoollogs/autoupgrade/dbron/cfgtoollogs/upgrade/auto/status/status.log 

Ya que tengo el descompilador de Java, le doy una nueva mirada al código y encuentro que ahora las cadenas a comparar son transformadas a minúsculas previo a la búsqueda (toLowerCase).

Con esto doy el caso por cerrado y continúo con las tareas de upgrade sin mayores problemas.

Aprovecho a agradecer al equipo de desarrollo de AutoUpgrade por el excelente servicio atendiendo mi pedido, son los mejores!!! 

¿Te pareció interesante este artículo?, ¿te quedaron algunas dudas?, ¿quieres sugerirme un tema a tratar?, pues déjame tus comentarios o ¡contáctame ahora mismo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Posts Relacionados

Qué hacer cuando Oracle reporta un valor incorrecto para el espacio usado en Fast Recovery Area.
Aprenda a resolver y evitar el error ORA-01017 cuando tenga implementado Oracle Data Guard con wallet.
Aprenda a identificar la fila involucrada en la ocurrencia del evento de espera "enq: TX - row lock contention"

¿Necesitas Ayuda?

Completa estos datos y estaré en contacto a la brevedad.