[OCI] Upgrade 19c a 26ai
![[OCI] Upgrade 19c a 26ai](https://cdn.hashnode.com/uploads/covers/65605419d28f19cc44df7ef1/a3c1b3a1-9152-47c4-8209-11bffce67e8e.png)
Ingeniero informático, Oracle ACE, DBA y Arquitecto OCI, con más de 15 años de experiencia en plataformas Oracle. Certificado en OCI Certified Architect Professional y OCI Migration and Integration Certified Professional.
Continuando con nuestros artículos previos:
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
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.
[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.
[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.
[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:
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.
Ejecuto la siguiente sentencia desde CDB$Root para solucionar la advertencia del sga_target.
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.
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í.
Vamos primero para la parte de Oracle Database Home:
- Definimos el directorio que albergara los binarios.
[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.
[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
[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
[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.
[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.
[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.
[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:
[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.
[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!
![[OCI] 19c DBCA - Silent mode](https://cdn.hashnode.com/uploads/covers/65605419d28f19cc44df7ef1/290a85d4-e3d3-475f-a6a6-5f4095bd9d3a.png)
![[OCI] Oracle Grid Infrastructure 19c (Oracle Restart + ASM)](https://cdn.hashnode.com/uploads/covers/65605419d28f19cc44df7ef1/d022eac1-1acd-4def-8ec1-7612950afe1c.png)
![[26ai] SQL: Calendar functions/Aggregation Filters "CALENDAR"](https://cdn.hashnode.com/uploads/covers/65605419d28f19cc44df7ef1/587e3328-9877-4c7a-aad7-7811e251f81e.png)
![[OCI] Recreación PDB$SEED](https://cdn.hashnode.com/uploads/covers/65605419d28f19cc44df7ef1/289ede5b-558c-4f93-b5c0-fa04680c91ca.png)