# [OCI] Upgrade 19c a 26ai

Continuando con nuestros artículos previos:

*   [\[OCI\] Oracle Grid Infrastructure 19c (Oracle Restart + ASM)](https://dbaenlasombra.com/oci-oracle-grid-infrastructure-19c-oracle-restart-asm).
    
*   [\[OCI\] 19c DBCA - Silent mode](https://dbaenlasombra.com/oci-19c-dbca-silent-mode).
    

Hoy toca subir la base de datos de **19c** a **26ai**. Para lograr dicho objetivo, vamos a utilizar **autoupgrade**, el uso del mismo, está maravillosamente explicado por **Daniel Overby** en su blog **dohdatabase**.

[Upgrade Oracle Database 19c CDB to Oracle AI Database 26ai](https://dohdatabase.com/2025/12/18/upgrade-oracle-database-19c-cdb-to-oracle-ai-database-26ai/?utm_source=chatgpt.com)

Debo reconocer que tenía muchas ganas de usarlo, así, que sin más, vamos a ello.

Primer paso, descargar el **autoupgrade.jar** desde la página oficial de **Oracle**.

```shell
[oracle@]$ wget https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar
```

En este punto, podemos verificar si el jar tiene errores con ***java -jar autoupgrade.jar -version***.

El proceso de **autoupgrade** puede hacerse:

*   **Source** y **target** en el mismo **server**
    
*   **Source** y **target** en diferente **server**.
    

En este laboratorio, tanto el **source** como el **target**, estarán en el mismo **server**.

## Config Files

Definir el fichero de configuración es un paso obligatorio para realizar con éxito nuestro **autoupgrade**.

Este fichero, contiene toda la configuración necesaria para realizar el ***upgrade*** de nuestra base de datos. Así que este será nuestro primer paso.

Aquí voy a definir las siguientes variables, no van a ser las mismas cuando realice el **analyze** respecto al **display**. En el **analyze**, voy a indicar **target\_version** para que el proceso de **autoupgrade** sepa contra que versión se debe hacer los **pre-checks**. Pero para la fase de display debo indicar **target\_home**.

*   **global.autoupg\_log\_dir**: directorio log.
    
*   **dba.source\_home**: nuestro actual $ORACLE\_HOME
    
*   **dba.target\_version**: especificamos la versión a la que queremos realizar el upgrade.
    
*   **dba.target\_home**: $ORACLE\_HOME para el target. Ahí deben estar los binarios de nuestra 26ai.
    
*   **dba.sid**: sid de nuestra base de datos.
    

Mi prefijo para el proceso es **dba**, pero podemos usar el que queramos.

```shell
[oracle@~]$ cat > upgrade19to26.cfg <<EOF
global.autoupg_log_dir=${HOME}/logs
dba.source_home=${ORACLE_HOME}
dba.target_version=23.0.0
dba.sid=${ORACLE_SID}
EOF
```

## Analyze

Ejecutamos la primera fase.

¿Que hace el **analyze**? Verifica si nuestra base de datos está lista para el **upgrade**, haciendo un checkeo y generando un informe. Este informe nos indica posibles errores para corregir antes de la siguiente fase o advertencias que deberíamos prestar atención.

La ejecución de esta fase sería *java -jar autoupgrade.jar -config <name\_cfg>.cfg -mode analyze*.

```shell
[oracle@~]$ java -jar autoupgrade.jar -config upgrade19to26.cfg -mode analyze

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

Jobs finished                  [1]
Jobs failed                    [0]

Please check the summary report at:
/home/oracle/logs/cfgtoollogs/upgrade/auto/status/status.html
/home/oracle/logs/cfgtoollogs/upgrade/auto/status/status.log
```

Revisamos el informe generado para ver si ha encontrado errores o advertencias antes de continuar.

Adjunto el informe generado:

[*cdb1\_preupgrade.html*](https://github.com/dbaenlasombra/OCI/blob/main/cdb1_preupgrade.html)

Leyendo el informe, no indica errores ni componentes inválidos. Solo voy a solucionar la advertencia del **sga\_target** antes de pasar a la siguiente fase. El resto de advertencias, como el **unified auditing**, **ordim** o las indicaciones a nivel de **tablespaces**, etc. las revisaremos al finalizar el **upgrade**.

![](https://cdn.hashnode.com/uploads/covers/65605419d28f19cc44df7ef1/8604d081-14e6-495a-9414-4998473139d7.png align="center")

Ejecuto la siguiente sentencia desde **CDB$Root** para solucionar la advertencia del **sga\_target**.

```sql
SQL> ALTER SYSTEM SET sga_target=4672M SCOPE=BOTH;
```

Lanzamos de nuevo el **analyze** para verificar que la advertencia del **sga\_target** ha desaparecido.

Dejo aquí el nuevo informe.

[cdb1\_preupgrade\_v2.html](https://github.com/dbaenlasombra/OCI/blob/main/cdb1_preupgrade_v2.html)

## Deploy

Fase donde se va realizar el **upgrade** de nuestra base de datos.

Como comentamos previamente, vamos a generar de nuevo el fichero de configuración (tenemos que usar el parámetro **target\_home**, en vez de **target\_version**), y con este parámetro de que es necesario tener instalado tanto **Oracle Database Home** como **Grid Infrastructure**.

Ambos los podemos descargar desde [aquí](https://www.oracle.com/database/technologies/oracle26ai-linux-downloads.html?utm_source=chatgpt.com).

Vamos primero para la parte de **Oracle Database Home**:

*   Definimos el directorio que albergara los binarios.
    

```shell
[oracle@~]$ mkdir -p /u01/app/oracle/product/26.0.0/dbhome_1
[oracle@~]$ cd /u01/app/oracle/product/26.0.0/dbhome_1
[oracle@dbhome_1]$ unzip /tmp/LINUX.X64_2326100_db_home.zip 
...
...
```

*   Una vez que tenemos ahí los binarios, ejecutamos la instalación en dos fases, primer verificamos que estamos listo con **\-executePrereqs** y después instalamos.
    

```shell
[oracle@dbhome_1]$ ./runInstaller -silent -setupDBHome -OSDBA dba -OSBACKUPDBA dba -OSDGDBA dba -OSKMDBA dba -OSRACDBA dba -ORACLE_BASE /u01/app/oracle -installEdition EE -INVENTORY_LOCATION /u01/app/oraInventory -executePrereqs

Launching Oracle AI Database Setup Wizard...

Prerequisite checks ran successfully.

[oracle@dbhome_1]$ ./runInstaller -silent -setupDBHome -OSDBA dba -OSBACKUPDBA dba -OSDGDBA dba -OSKMDBA dba -OSRACDBA dba -ORACLE_BASE /u01/app/oracle -installEdition EE -INVENTORY_LOCATION /u01/app/oraInventory
...
...
```

Respecto a **Grid Infrastructure**:

*   Definimos el directorio que albergara los binarios y paramos la base de datos
    

```shell
[grid@~]$ mkdir -p /u01/app/26.0.0/grid
[grid@~]$ cd /u01/app/26.0.0/grid
[grid@grid]$ unzip /tmp/LINUX.X64_2326100_grid_home.zip
```

*   Paramos la base de datos
    

```shell
[grid@grid]$ srvctl stop database -db cdb1
[grid@grid]$ srvctl status database -db cdb1
```

*   Una vez que tenemos ahí los binarios, ejecutamos la instalación en dos fases, primer verificamos que estamos listo con **\-executePrereqs** y después instalamos.
    

```sql
[grid@intheshadow grid]$ ./gridSetup.sh -silent -upgrade -ORACLE_BASE $ORACLE_BASE -executePrereqs
...
...
[grid@intheshadow grid]$ ./gridSetup.sh -silent -upgrade -ORACLE_BASE $ORACLE_BASE
...
...
```

*   Arrancamos de nuevo la base de datos.
    

```shell
[grid@grid]$ srvctl start database -db cdb1
[grid@grid]$ srvctl status database -db cdb1
```

Ahora que tenemos listo, tanto **Oracle Database Home** como **Grid Infrastructure,** generamos nuestro nuevo fichero de configuración.

```sql
[oracle@~]$ cat > upgrade19to26.cfg <<EOF
global.autoupg_log_dir=${HOME}/logs
dba.source_home=${ORACLE_HOME}
dba.target_home=$(echo "${ORACLE_HOME}" | sed 's/19\.0\.0/26.0.0/')
dba.sid=${ORACLE_SID}
EOF
```

Lanzamos el **deploy**:

```sql
[oracle@ ~]$ java -jar autoupgrade.jar -config upgrade19to26.cfg -mode deploy

Previous execution found loading latest data
Total jobs recovered: 1
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
Type 'help' to list console commands
upg> Job 106 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]

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

---- Drop GRP at your convenience once you consider it is no longer needed ----
Drop GRP from CDB1: drop restore point AUTOUPGRADE_9212_CDB11932000


Please check the summary report at:
/home/oracle/logs/cfgtoollogs/upgrade/auto/status/status.html
/home/oracle/logs/cfgtoollogs/upgrade/auto/status/status.log
```

Listo, ha terminado correctamente, aunque no a la primera "**Total jobs recovered: 1**". En el próximo artículo hablare en detalle de los errores que he tenido en el **autoupgrade** por si os puede ayudar.

```sql
[oracle@~]$ sqlplus / as sysdba

SQL*Plus: Release 23.26.1.0.0 - Production on Thu Sep 10 18:09:25 2026
Version 23.26.1.0.0

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


Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production
Version 23.26.1.0.0

SQL> select banner_full from v$version;

BANNER_FULL
------------------------------------------------------------------
Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production
Version 23.26.1.0.0
```

El siguiente paso y último en esta aventura, sera usar la última versión de **ZDM** con el objetivo de familiarizarnos con está nueva versión, tengo muchas ganas de probar el nuevo "**instant deploy**" y así migramos una **PDB** a esta base de datos.

Espero que os guste. ¡Nos vemos en el próximo artículo!
