Aprende a parchar como Dios manda (S3E1)

Iniciamos el 2026 con la tercera temporada de la serie de artículos «Aprende a parchar como Dios manda».

Por si no lo has hecho aún, te recomiendo darle una mirada a los episodios anteriores:

S1E1. Parchado in-place, la forma más común y también la más peligrosa
S1E2. Parchado out-of-place, la forma recomendada y también la más eficiente
S1E3. Creación de Gold Image para el parchado de Oracle Single Instance Database

S2E1. Parchado de Oracle RAC Database con Gold Image
S2E2. Parchado out-of-place de Oracle Grid Infrastructure (Oracle Restart)
S2E3. Creación de Gold Image para el parchado de Oracle Grid Infrastructure (Oracle Restart)

En esta nueva temporada haremos una revisión de lo ya visto, pero ahora aprovechando el utilitario AutoUpgrade, que con la versión 26.2 ha alcanzado un nivel de madurez que no podemos pasar por alto.

En un artículo anterior analizo a AutoUpgrade en su faceta como utilitario para descargar parches; ahora lo veremos como una herramienta para instalación y para parchado.

Para empezar, veremos las diferencias con el procedimiento seguido en el artículo S1E2: Parchado de Oracle Single Instance Database.

Situación inicial

Contamos con un servidor llamado server1, en el cual se tiene instalado Oracle Database Server 19c con RU 19.27, en un Oracle Home llamado DBHome1, que da soporte a una base de datos single instance llamada democdb.

Conforme a la lista que sigue, queremos implementar el Release Update más reciente: 19.30, así como los parches sugeridos y la versión más actual de OPatch, todo para Linux:

38632161Database Release Update : 19.30.0.0.260120(REL-JAN260130) (38632161)
38661284OCW RELEASE UPDATE 19.30.0.0.0 (38661284)
38523609OJVM RELEASE UPDATE: 19.30.0.0.260120 (38523609)
38586770JDK BUNDLE PATCH 19.0.0.0.260120
38844733DATAPUMP BUNDLE PATCH 19.30.0.0.0
29213893DBMS_STATS FAILING WITH ERROR ORA-01422 WHEN GATHERING STATS FOR USER$ TABLE
34774667ORA-7445 IN PURGE QUEUE TABLE
34672698ORA-00800 SOFT EXTERNAL ERROR, ARGUMENTS [SET PRIORITY FAILED], [VKTM] , DISM(16)
37690446ORA-600 [KTATMKREF-RS] ERRORS IN THE ALERT LOG POST-PATCH 37260974 (19.26.0.0.250121 DBRU)
3884436719.30 OJVM PATCH APPLY IS FAILING ON SECOND NODE IN RAC ENVIRONMENT

AutoUpgrade: download

Archivo de configuración

Como primer paso, vamos a crear un archivo de configuración, que llamaremos download.cfg.
global.global_log_dir=/stage/autoupgrade/log
global.keystore=/stage/autoupgrade/keystore
global.folder=/stage/autoupgrade/patches

patch1.patch=RU:19.30,OPATCH,OJVM,DPBP,OCW,JDK,37690446,34672698,34774667,29213893,38844367
patch1.platform=LINUX.X64

En él señalamos:

  1. la ubicación del Wallet con nuestras credenciales de My Oracle Support (línea 2)
  2. el directorio para descargar los parches (línea 3)
  3. los parches que necesitamos (línea 5)
  4. la plataforma en uso (línea 6)

1

2

Descargar parches

Hacemos una primera invocación a AutoUpgrade, para ejecutar la descarga en sí, con -mode download:

java -jar autoupgrade.jar \
-config download.cfg \
-patch -mode download

AutoUpgrade Patching 26.2.260205 launched with default internal options
Processing config file ...
Loading AutoUpgrade Patching keystore
AutoUpgrade Patching keystore is loaded

Connected to MOS - Searching for specified patches

There were conditions found preventing AutoUpgrade Patching from successfully running

*Downloading files
Cannot find the patch for bug 38844367

AutoUpgrade no encuentra el parche 38844367, aunque sí está disponible en MOS.

Luego de consultar el caso con algunos ingenieros de Oracle a cargo de AutoUpgrade, se concluye que se trata de una limitación del producto: actualmente solo se pueden descargar parches relacionados con el RU y este parche es de OJVM.

Siendo así, no queda más que removerlo de la lista y descargarlo por otros medios. Parece que getMOSPatch seguirá siendo mi aliado hasta nuevo aviso.

global.global_log_dir=/stage/autoupgrade/log
global.keystore=/stage/autoupgrade/keystore
global.folder=/stage/autoupgrade/patches

patch1.patch=RU:19.30,OPATCH,OJVM,DPBP,OCW,JDK,37690446,34672698,34774667,29213893
patch1.platform=LINUX.X64
java -jar autoupgrade.jar \
-config download.cfg \
-patch -mode download

AutoUpgrade Patching 26.2.260205 launched with default internal options
Processing config file ...
Loading AutoUpgrade Patching keystore
AutoUpgrade Patching keystore is loaded

Connected to MOS - Searching for specified patches

------------------------------------------------------------------------
Downloading files to /stage/autoupgrade/patches
------------------------------------------------------------------------
DATABASE RELEASE UPDATE 19.30.0.0.0(REL-JAN260130)
    File: p38632161_190000_Linux-x86-64.zip - VALIDATED

OPatch 12.2.0.1.49 for DB 19.0.0.0.0 (Jan 2026)
    File: p6880880_190000_Linux-x86-64.zip - VALIDATED

OJVM RELEASE UPDATE 19.30.0.0.0
    File: p38523609_190000_Linux-x86-64.zip - VALIDATED

DATAPUMP BUNDLE PATCH 19.30.0.0.0
    File: p38844733_1930000DBRU_Generic.zip - VALIDATED

GI RELEASE UPDATE 19.30.0.0.0(REL-JAN260130)
    File: p38629535_190000_Linux-x86-64.zip - VALIDATED

JDK BUNDLE PATCH 19.0.0.0.260120
    File: p38586770_190000_Linux-x86-64.zip - VALIDATED

ORA-600 [KTATMKREF-RS] ERRORS IN THE ALERT LOG POST-PATCH 37260974 (19.26.0.0.250121 DBRU)
    File: p37690446_1930000DBRU_Linux-x86-64.zip - VALIDATED

ORA-00800: SOFT EXTERNAL ERROR, ARGUMENTS: [SET PRIORITY FAILED], [VKTM] , DISM(16)
    File: p34672698_1930000DBRU_Linux-x86-64.zip - VALIDATED

ORA-7445 IN PURGE QUEUE TABLE
    File: p34774667_1930000DBRU_Linux-x86-64.zip - VALIDATED

DBMS_STATS FAILING WITH ERROR ORA-01422 WHEN GATHERING STATS FOR USER$ TABLE
    File: p29213893_1930000DBRU_Generic.zip - VALIDATED
------------------------------------------------------------------------

Copiar instaladores

Si bien ya tenemos todos los parches requeridos, para que AutoUpgrade pueda hacer la instalación debemos colocar el instalador base de Oracle Database Server 19c en la carpeta de parches.

Esto ya no es necesario con Oracle 26ai porque el RU es en realidad un Gold Image listo para ser usado como instalador.

$ ls -la /stage/autoupgrade/patches
drwxrwxr-x Feb 10 18:27 .
drwxrwxr-x Feb 10 20:02 ..
-rw-rw-r-- Apr 26  2019 LINUX.X64_193000_db_home.zip
-rw-rw-r-- Feb  9 09:40 p29213893_1930000DBRU_Generic.zip
-rw-rw-r-- Feb  9 09:40 p34672698_1930000DBRU_Linux-x86-64.zip
-rw-rw-r-- Feb  9 09:40 p34774667_1930000DBRU_Linux-x86-64.zip
-rw-rw-r-- Feb  9 09:40 p37690446_1930000DBRU_Linux-x86-64.zip
-rw-rw-r-- Feb  9 09:34 p38523609_190000_Linux-x86-64.zip
-rw-rw-r-- Feb  1 16:03 p38586770_190000_Linux-x86-64.zip
-rw-rw-r-- Feb  9 09:33 p38632161_190000_Linux-x86-64.zip
-rw-rw-r-- Feb  9 11:06 p38661284_1930000OCW_Linux_x86-64.zip
-rw-rw-r-- Feb  9 14:45 p38844367_1930000OJVMRU_Generic.zip
-rw-rw-r-- Feb  9 09:34 p38844733_1930000DBRU_Generic.zip
-rw-rw-r-- Feb  1 15:52 p6880880_190000_Linux-x86-64.zip

3

AutoUpgrade: create_home

Archivo de configuración

Necesitamos un nuevo archivo de configuración, el cual llamaremos create_oh.cfg, con los siguientes datos:

global.global_log_dir=/home/oracle/autoupgrade/log
global.keystore=/home/oracle/autoupgrade/keystore
global.folder=/NFS/autoupgrade/patches

install1.patch=RU:19.30,OPATCH,OJVM,DPBP,OCW,JDK,37690446,34672698,34774667,29213893,38844367
install1.target_version=19
install1.platform=LINUX.X64
install1.download=no

install1.target_home=/u01/app/oracle/19.0.0/db_2
install1.home_settings.oracle_base=/u01/app/oracle
install1.home_settings.edition=EE
install1.home_settings.inventory_location=/u01/app/oraInventory
install1.home_settings.home_name=DBHome2
install1.home_settings.osdba_group=dba
install1.home_settings.osbackupdba_group=backupdba
install1.home_settings.osdgdba_group=dgdba
install1.home_settings.oskmdba_group=kmdba
install1.home_settings.osracdba_group=racdba
install1.home_settings.ru_apply=yes

Como lo usual es que los parches se descarguen desde un servidor con acceso a internet, pero la instalación del software se hace en servidores aislados del internet, en la línea 3 indicamos la ubicación de los parches dentro de una carpeta compartida por NFS.

En la línea 5 va la lista de parches a aplicar, incluido el que tuvimos que descargar por nuestra cuenta.

En la línea 8 indicamos que no se harán descargas, ya que todo lo necesario está en la carpeta de parches.

En las líneas 10 a 19 se indican las propiedades del nuevo Oracle Home, como su ubicación, nombre, grupos, etc.

Finalmente, en la línea 20, se indica que se aplique el RU al momento de instalar, lo que es equivalente a ejecutar: runinstaller -applyRU. Eso sí, los parches adicionales se instalarán uno a uno con OPatch, AutoUpgrade no hace uso de: -applyOneOffs, lo cual puede hacerlo algo más lento, pero tiene como ventaja que es a prueba de todo (los MRP no pueden ser procesados por -applyOneOffs, por ejemplo).

1

2

Instalar Oracle Database

Hacemos una tercera invocación a AutoUpgrade, esta vez para ejecutar la instalación, con -mode create_home:
java -jar autoupgrade.jar \
-config create_oh.cfg \
-patch -mode create_home

Processing config file ...
Loading AutoUpgrade Patching keystore
AutoUpgrade Patching keystore is loaded
+-----------------------------------------+
| Starting AutoUpgrade Patching execution |
+-----------------------------------------+
Type 'help' to list console commands
patch>

Tal como vemos líneas abajo, AutoUpgrade empieza por descomprimir el instalador base de Oracle 19c, y luego va aplicando uno a uno los parches solicitados.

patch> lsj -a 90
patch> +----+-------------+-------+---------+-------+----------+-------+---------------------+
|Job#|      DB_NAME|  STAGE|OPERATION| STATUS|START_TIME|UPDATED|              MESSAGE|
+----+-------------+-------+---------+-------+----------+-------+---------------------+
| 100|create_home_1|EXTRACT|EXECUTING|RUNNING|  12:45:18| 5s ago|Extracting gold image|
+----+-------------+-------+---------+-------+----------+-------+---------------------+
Total jobs 1

The command lsj is running every 90 seconds. PRESS ENTER TO EXIT
+----+-------------+-------+---------+-------+----------+-------+----------------------+
|Job#|      DB_NAME|  STAGE|OPERATION| STATUS|START_TIME|UPDATED|               MESSAGE|
+----+-------------+-------+---------+-------+----------+-------+----------------------+
| 100|create_home_1|INSTALL|EXECUTING|RUNNING|  12:45:18| 5s ago|Installing ORACLE_HOME|
+----+-------------+-------+---------+-------+----------+-------+----------------------+
Total jobs 1

The command lsj is running every 90 seconds. PRESS ENTER TO EXIT
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
|Job#|      DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|                                 MESSAGE|
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
| 100|create_home_1|OH_PATCHING|EXECUTING|RUNNING|  12:45:18| 3s ago|OJVM RELEASE UPDATE: 19.30.0.0.260120 (3|
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
Total jobs 1

The command lsj is running every 90 seconds. PRESS ENTER TO EXIT
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
|Job#|      DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|                                 MESSAGE|
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
| 100|create_home_1|OH_PATCHING|EXECUTING|RUNNING|  12:45:18|33s ago|OCW RELEASE UPDATE 19.30.0.0.0 (38661284|
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
Total jobs 1

The command lsj is running every 90 seconds. PRESS ENTER TO EXIT
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
|Job#|      DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|                                 MESSAGE|
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
| 100|create_home_1|OH_PATCHING|EXECUTING|RUNNING|  12:45:18|11s ago|ORA-600 [KTATMKREF-RS] ERRORS IN THE ALE|
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
Total jobs 1

The command lsj is running every 90 seconds. PRESS ENTER TO EXIT
+----+-------------+-----------+---------+-------+----------+-------+-----------------------------+
|Job#|      DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|                      MESSAGE|
+----+-------------+-----------+---------+-------+----------+-------+-----------------------------+
| 100|create_home_1|OH_PATCHING|EXECUTING|RUNNING|  12:45:18|13s ago|ORA-7445 IN PURGE QUEUE TABLE|
+----+-------------+-----------+---------+-------+----------+-------+-----------------------------+
Total jobs 1

The command lsj is running every 90 seconds. PRESS ENTER TO EXIT
Job 100 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]

Jobs finished                  [1]
Jobs failed                    [0]
Jobs restored                  [0]
Jobs pending                   [0]

# Run the root.sh script as root for the following jobs:
For create_home_1 -> /u01/app/oracle/19.0.0/db_2/root.sh

Please check the summary report at:
/home/oracle/autoupgrade/log2/cfgtoollogs/patch/auto/status/status.html
/home/oracle/autoupgrade/log2/cfgtoollogs/patch/auto/status/status.log

Ejecutar root.sh

Al concluir, sin incidentes, nos indica que debemos ejecutar root.sh para concluir con la instalación.

Lo ejecutamos y verificamos que el nuevo Oracle Home está tal como lo solicitamos.

$ sudo sh /u01/app/oracle/19.0.0/db_2/root.sh
Check /u01/app/oracle/19.0.0/db_2/install/root_server1_2026-02-09_13-09-34-146067296.log for the output of root script

$ opatch lspatches
38632161;Database Release Update : 19.30.0.0.260120(REL-JAN260130) (38632161)
38661284;OCW RELEASE UPDATE 19.30.0.0.0 (38661284)
38523609;OJVM RELEASE UPDATE: 19.30.0.0.260120 (38523609)
38586770;JDK BUNDLE PATCH 19.0.0.0.260120
38844733;DATAPUMP BUNDLE PATCH 19.30.0.0.0
29213893;DBMS_STATS FAILING WITH ERROR ORA-01422 WHEN GATHERING STATS FOR USER$ TABLE
34774667;ORA-7445 IN PURGE QUEUE TABLE
34672698;ORA-00800  SOFT EXTERNAL ERROR, ARGUMENTS  [SET PRIORITY FAILED], [VKTM] , DISM(16)
37690446;ORA-600 [KTATMKREF-RS] ERRORS IN THE ALERT LOG POST-PATCH 37260974 (19.26.0.0.250121 DBRU)
38844367;19.30 OJVM PATCH APPLY IS FAILING ON SECOND NODE IN RAC ENVIRONMENT

OPatch succeeded.

3

AutoUpgrade: patch

Archivo de configuración​

Creamos un archivo de configuración, el cual llamaremos patch_db.cfg, con los siguientes datos:

global.global_log_dir=/home/oracle/autoupgrade/log
global.folder=/NFS/autoupgrade/patches

patch1.sid=democdb
patch1.source_home=/u01/app/oracle/19.0.0/db_1
patch1.target_home=/u01/app/oracle/19.0.0/db_2
patch1.restoration=NO

Como vemos, es bastante simple: solo indicamos el Oracle Home original, el Oracle Home de destino y, desde luego, el ORACLE_SID de la base de datos que vamos a parchar.

1

2

Parchar la base de datos

Estamos listos para que AutoUpgrade haga el trabajo de parchado, con -mode deploy:

java -jar autoupgrade.jar \
-config patch_db.cfg \
-patch -mode deploy

AutoUpgrade Patching 26.2.260205 launched with default internal options
Processing config file ...
+-----------------------------------------+
| Starting AutoUpgrade Patching execution |
+-----------------------------------------+
1 CDB(s) plus 2 PDB(s) will be processed
Type 'help' to list console commands
patch> 

AutoUpgrade empieza por ejecutar chequeos previos, como por ejemplo ver el estado de las estadísticas, tareas en ejecución, etc., que podrían impedir el parchado.

A continuación detiene la base de datos y la inicia en su nuevo Oracle Home, ejecuta datapatch para actualizar el catálogo, esto para CDB$ROOT, PDB$SEED y todos los PDBs que existan.

Finalmente hace validaciones adicionales y copia al nuevo Oracle Home archivos como tnsnames.ora, sqlnet.ora,  password file, etc.

patch> lsj -a 30
patch> +----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 100|democdb|PRECHECKS|EXECUTING|RUNNING|  15:23:29| 0s ago|Executing Checks|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

The command lsj is running every 30 seconds. PRESS ENTER TO EXIT
+----+-------+---------+---------+-------+----------+-------+-------------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|            MESSAGE|
+----+-------+---------+---------+-------+----------+-------+-------------------+
| 100|democdb|PREFIXUPS|EXECUTING|RUNNING|  15:23:29| 4s ago|Re-Executing Checks|
+----+-------+---------+---------+-------+----------+-------+-------------------+
Total jobs 1

The command lsj is running every 30 seconds. PRESS ENTER TO EXIT
+----+-------+-----------+---------+-------+----------+-------+-----------------+
|Job#|DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|          MESSAGE|
+----+-------+-----------+---------+-------+----------+-------+-----------------+
| 100|democdb|DB_PATCHING|EXECUTING|RUNNING|  15:23:29|18s ago|Patching Database|
+----+-------+-----------+---------+-------+----------+-------+-----------------+
Total jobs 1

The command lsj is running every 30 seconds. PRESS ENTER TO EXIT
+----+-------+-----------+---------+-------+----------+-------+-------------------------------+
|Job#|DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|                        MESSAGE|
+----+-------+-----------+---------+-------+----------+-------+-------------------------------+
| 100|democdb|DB_PATCHING|EXECUTING|RUNNING|  15:23:29|15s ago|PREFIXUPS - Re-Executing Checks|
+----+-------+-----------+---------+-------+----------+-------+-------------------------------+
Total jobs 1

The command lsj is running every 30 seconds. PRESS ENTER TO EXIT
+----+-------+-----------+---------+-------+----------+-------+--------------------------------+
|Job#|DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|                         MESSAGE|
+----+-------+-----------+---------+-------+----------+-------+--------------------------------+
| 100|democdb|DB_PATCHING|EXECUTING|RUNNING|  15:23:29|15s ago|DRAIN - Disabling RAC if present|
+----+-------+-----------+---------+-------+----------+-------+--------------------------------+
Total jobs 1

The command lsj is running every 30 seconds. PRESS ENTER TO EXIT
+----+-------+-----------+---------+-------+----------+-------+----------------------------------------+
|Job#|DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|                                 MESSAGE|
+----+-------+-----------+---------+-------+----------+-------+----------------------------------------+
| 100|democdb|DB_PATCHING|EXECUTING|RUNNING|  15:23:29|15s ago|DRAIN - RAC configurations have finished|
+----+-------+-----------+---------+-------+----------+-------+----------------------------------------+
Total jobs 1

The command lsj is running every 30 seconds. PRESS ENTER TO EXIT
+----+-------+-----------+---------+-------+----------+-------+-------------------+
|Job#|DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|            MESSAGE|
+----+-------+-----------+---------+-------+----------+-------+-------------------+
| 100|democdb|DB_PATCHING|EXECUTING|RUNNING|  15:23:29|15s ago|DBUPGRADE - Running|
+----+-------+-----------+---------+-------+----------+-------+-------------------+
Total jobs 1

The command lsj is running every 30 seconds. PRESS ENTER TO EXIT
+----+-------+-----------+---------+-------+----------+-------+-------------------------------+
|Job#|DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|                        MESSAGE|
+----+-------+-----------+---------+-------+----------+-------+-------------------------------+
| 100|democdb|DB_PATCHING|EXECUTING|RUNNING|  15:23:29|15s ago|DBUPGRADE - 5%Patching CDB$ROOT|
+----+-------+-----------+---------+-------+----------+-------+-------------------------------+
Total jobs 1

The command lsj is running every 30 seconds. PRESS ENTER TO EXIT
+----+-------+-----------+---------+-------+----------+-------+-------------------------------+
|Job#|DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|                        MESSAGE|
+----+-------+-----------+---------+-------+----------+-------+-------------------------------+
| 100|democdb|DB_PATCHING|EXECUTING|RUNNING|  15:23:29|15s ago|DBUPGRADE - 0%Patching PDB$SEED|
+----+-------+-----------+---------+-------+----------+-------+-------------------------------+
Total jobs 1

The command lsj is running every 30 seconds. PRESS ENTER TO EXIT
+----+-------+-----------+---------+-------+----------+-------+-----------------------------+
|Job#|DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|                      MESSAGE|
+----+-------+-----------+---------+-------+----------+-------+-----------------------------+
| 100|democdb|DB_PATCHING|EXECUTING|RUNNING|  15:23:29|15s ago|POSTFIXUPS - Executing fixups|
+----+-------+-----------+---------+-------+----------+-------+-----------------------------+
Total jobs 1

The command lsj is running every 30 seconds. PRESS ENTER TO EXIT
+----+-------+----------+---------+-------+----------+-------+-------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|START_TIME|UPDATED|MESSAGE|
+----+-------+----------+---------+-------+----------+-------+-------+
| 100|democdb|POSTCHECKS|PREPARING|RUNNING|  15:23:29| 0s ago|       |
+----+-------+----------+---------+-------+----------+-------+-------+
Total jobs 1

The command lsj is running every 30 seconds. PRESS ENTER TO EXIT
Job 100 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]

Jobs finished                  [1]
Jobs failed                    [0]
Jobs restored                  [0]
Jobs pending                   [0]

Please check the summary report at:
/home/oracle/autoupgrade/log_1930/cfgtoollogs/patch/auto/status/status.html
/home/oracle/autoupgrade/log_1930/cfgtoollogs/patch/auto/status/status.log

Verificar

Comprobamos que la base de datos esté operativa desde el nuevo Oracle Home, con RU 19.30.

$ srvctl status database -db democdb
Database is running.

$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Feb 10 21:46:57 2026
Version 19.30.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.30.0.0.0

SQL> show pdbs

CON_ID CON_NAME  OPEN MODE  RESTRICTED
------ --------- ---------- ----------
     2 PDB$SEED  READ ONLY  NO
     3 DEMO      READ WRITE NO

3

Conclusiones

AutoUpgrade es la herramienta oficial de Oracle para ejecutar upgrades; personalmente, lo he usado en muchos proyectos y nunca me ha defraudado. Ahora, en su fase de utilitario para descargar parches y ejecutar instalaciones, va por el camino correcto y es bastante sólido.

Pero ojo: AutoUpgrade está limitado a Oracle Database Server; para Oracle Grid Infrastructure tendremos que seguir ejecutando comandos manualmente.

Para mí, que ya tengo automatizadas con Ansible las tareas de instalar y parchar el software Oracle Database Server y Oracle Grid Infrastructure, quizás no sea el momento de abandonar todo y reemplazarlo por AutoUpgrade, pero sí es mi herramienta favorita para el parchado y upgrade de las bases de datos.

Para quien no tiene aún todo automatizado, AutoUpgrade es, sin pensarlo dos veces, la herramienta ideal para hacerte la vida más fácil. Te recomiendo empezar a probarlo lo antes posible, ¡no te arrepentirás!

Para complementar lo aquí expuesto, te recomiendo la lectura de las notas:

Posts Recientes

www.freepik.com
Aprenda a descargar los parches de Oracle, usando el utilitario autoupgrade en adicion a getMOSPatch.
www.freepik.com
Mi selección de los 5 mejores artículos sobre Oracle, publicados en enero de 2026.
www.freepik.com
Mi selección de los 5 mejores artículos sobre Oracle, publicados en diciembre de 2025.
Hide column contents
Use Real Application Security para ocultar los contenidos de columnas, dinámicamente y sin tener que modificar las aplicaciones.
www.vecteezy.com/free-vector/online
Mi selección de los 5 mejores artículos sobre Oracle, publicados en noviembre de 2025.
Top5 2025-10
Mi selección de los 5 mejores artículos sobre Oracle, publicados en octubre de 2025.

¿Necesitas Ayuda?

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