Upgrading an Oracle database from 19c to 26ai is a major milestone for any DBA team. Oracle Database 26ai introduces AI-native features, performance improvements, and long-term support—but the upgrade process must be executed carefully to avoid downtime and surprises.
In this blog, I’ll walk you through a real production-style upgrade from Oracle 19c (19.23) to Oracle 26ai (23.26) using AutoUpgrade, including prechecks, common errors, fixes, and final upgrade validation.
This guide is practical, command-driven, and based on an actual RAC environment.
Why Use AutoUpgrade for 19c to 26ai?
Oracle AutoUpgrade is the recommended upgrade method for modern Oracle releases. It provides:
- Automated prechecks and fixups
- Minimal downtime
- Support for CDB and PDB upgrades
- Detailed logging and monitoring
- Safer, repeatable upgrade workflow
For large environments or RAC systems, AutoUpgrade removes much of the manual risk traditionally associated with DBUA or manual scripts.
Step 1: Prepare the AutoUpgrade JAR
Oracle frequently updates AutoUpgrade independently of database homes, so the first best practice is to use the latest autoupgrade.jar.
cd /u01/app/oracle/product/23.26.0.0/dbhome_1/rdbms/admin
mv autoupgrade.jar autoupgrade.jar.bkp
cp /downloads/autoupgrade.jar .
This ensures you’re running with the newest checks, fixes, and bug improvements.
Step 2: Generate a Sample Config File
Use the Java bundled with the target Oracle 26ai home:
$ORACLE_BASE/product/23.26.0.0/dbhome_1/jdk/bin/java \
-jar $ORACLE_BASE/product/23.26.0.0/dbhome_1/rdbms/admin/autoupgrade.jar \
-create_sample_file config /tmp/config.cfg
This creates a clean template you can safely customize.
Step 3: Configure the Upgrade (config.cfg)
Below is the actual working configuration used for this upgrade:
upg1.log_dir=/u01/app/oracle/cfgtoollogs/autoupgrade/
upg1.sid=test
upg1.source_home=/u01/app/oracle/product/19.0.0/dbhome_1
upg1.target_home=/u01/app/oracle/product/23.26.0.0/dbhome_1
upg1.start_time=NOW
upg1.upgrade_node=rac-node1
upg1.run_utlrp=yes
upg1.timezone_upg=yes
upg1.target_version=23
upg1.restoration=no
Important highlights
run_utlrp=yesensures invalid objects are recompiledtimezone_upg=yesprepares for timezone upgradesrestoration=noavoids restore-based precheck failures (explained later)
Step 4: Run AutoUpgrade in ANALYZE Mode
Always run ANALYZE before DEPLOY.
/u01/app/oracle/product/23.26.0.0/dbhome_1/jdk/bin/java \
-jar /u01/app/oracle/product/23.26.0.0/dbhome_1/rdbms/admin/autoupgrade.jar \
-config /tmp/config.cfg -mode analyze
Result
- 1 CDB + 2 PDBs analyzed
- No failures
- Detailed reports generated
Logs and reports:
/u01/app/oracle/cfgtoollogs/autoupgrade/.../status.log
/u01/app/oracle/cfgtoollogs/autoupgrade/.../status.html

Step 5: Start the Upgrade (DEPLOY Mode)
Once ANALYZE and PRECHECKS succeed, start the real upgrade:
/u01/app/oracle/product/23.26.0.0/dbhome_1/jdk/bin/java \
-jar /u01/app/oracle/product/23.26.0.0/dbhome_1/rdbms/admin/autoupgrade.jar \
-config /tmp/config.cfg -mode deploy
AutoUpgrade 25.6.251016 launched with default internal options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 CDB(s) plus 2 PDB(s) will be processed
Type 'help' to list console commands
upg>
Step 6: Monitor Upgrade Progress
Inside the AutoUpgrade console:
lsj
lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME| STAGE|OPERATION| STATUS|START_TIME|UPDATED| MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102| test|PREFIXUPS|EXECUTING|RUNNING| 11:43:33| 4s ago|Executing fixups|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1
status -job 102
Upgrade stages observed:
- SETUP
- PREUPGRADE
- PRECHECKS
- PREFIXUPS
- DRAIN
- DBUPGRADE
- POSTCHECKS
- POSTFIXUPS
- POSTUPGRADE
- SYSUPDATES
Live container progress:
- CDB$ROOT
- PDB$SEED
- TESTPDB
The DBUPGRADE stage ran for ~25 minutes.
Details
Job No 102
Oracle SID test
Start Time 26/02/05 11:43:33
Elapsed (min): 31
End time: N/A
Logfiles
Logs Base: /u01/app/oracle/cfgtoollogs/autoupgrade/test
Job logs: /u01/app/oracle/cfgtoollogs/autoupgrade/test/102
Stage logs: /u01/app/oracle/cfgtoollogs/autoupgrade/test/102/dbupgrade
TimeZone: /u01/app/oracle/cfgtoollogs/autoupgrade/test/temp
Remote Dirs:
Stages
SETUP <1 min
PREUPGRADE <1 min
PRECHECKS <1 min
PREFIXUPS 2 min
DRAIN 3 min
DBUPGRADE ~25 min (RUNNING)
POSTCHECKS
POSTFIXUPS
POSTUPGRADE
SYSUPDATES
Stage-Progress Per Container
+--------+---------+
|Database|DBUPGRADE|
+--------+---------+
|CDB$ROOT| 41 % |
|PDB$SEED| 0 % |
| TESTPDB| 0 % |
+--------+---------+
upg>
Step 7: Validate Upgrade Results
After completion, review upg_summary.log.
✔ CDB$ROOT
- Upgraded to 23.26.1.0.0
- Total time: 44 minutes
✔ PDB$SEED
- Upgraded successfully
- Total time: 54 minutes
✔ TESTPDB
- Fully upgraded
- All components VALID
Components upgraded:
- Oracle Server
- JVM
- XML DB
- Spatial
- Oracle Text
- Database Vault
- Datapatch
Grand total upgrade time:
1 hour 44 minutes 56 seconds
Post-Upgrade Note: Timezone Version
The database timezone remained at version 32, while 26ai ships with version 43.
Oracle recommends running:
[oracle@rac-node1 ~]$ sqlplus "/as sysdba"
SQL*Plus: Release 23.26.1.0.0 - Production on Thu Feb 5 18:25:42 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 * FROM v$timezone_file;
FILENAME VERSION CON_ID
-------------------- ---------- ----------
timezlrg_43.dat 43 0
to complete the timezone upgrade after validation and testing.
AutoUpgrade Summery
Oracle Database Release 23 Post-Upgrade Status Tool 02-05-2026 12:34:1
Container Database: TEST
[CON_ID: 1 => CDB$ROOT]
Component Current Full Elapsed Time
Name Status Version HH:MM:SS
Oracle Server UPGRADED 23.26.1.0.0 00:26:27
JServer JAVA Virtual Machine UPGRADED 23.26.1.0.0 00:06:33
Oracle XDK UPGRADED 23.26.1.0.0 00:02:30
Oracle Database Java Packages UPGRADED 23.26.1.0.0 00:00:38
OLAP Analytic Workspace UPGRADED 23.26.1.0.0 00:00:13
Oracle Label Security UPGRADED 23.26.1.0.0 00:00:11
Oracle Database Vault UPGRADED 23.26.1.0.0 00:01:03
Oracle Text UPGRADED 23.26.1.0.0 00:00:57
Oracle Workspace Manager UPGRADED 23.26.1.0.0 00:01:25
Oracle Real Application Clusters UPGRADED 23.26.1.0.0 00:00:00
Oracle XML Database UPGRADED 23.26.1.0.0 00:01:21
Spatial UPGRADED 23.26.1.0.0 00:04:44
Oracle OLAP API UPGRADED 23.26.1.0.0 00:00:16
Datapatch 00:00:12
Final Actions 00:00:42
Post Upgrade 00:00:28
Total Upgrade Time: 00:44:40 [CON_ID: 1 => CDB$ROOT * ]
Asterisks denotes compilation time has been included during the upgrade process
unless invoked from AutoUpgrade.
Database time zone version is currently at 32. It is older than the
latest time zone version data file 43 that is shipped in the target home.
Time zone upgrade is recommended using the DBMS_DST package.
Note that this message is printed before post upgrade fixups are run.
To review if a time zone upgrade is needed, query the database before updating
the time zone manually.
Use "select version from v$timezone_file" to query current database timezone ver
sion.
Use "select dbms_dst.get_latest_timezone_version from dual" to query the latest
timezone version in the target home.
Oracle Database Release 23 Post-Upgrade Status Tool 02-05-2026 13:32:4
Container Database: TEST
[CON_ID: 3 => TESTPDB]
Component Current Full Elapsed Time
Name Status Version HH:MM:SS
Oracle Server UPGRADED 23.26.1.0.0 00:35:27
JServer JAVA Virtual Machine UPGRADED 23.26.1.0.0 00:05:58
Oracle XDK UPGRADED 23.26.1.0.0 00:02:13
Oracle Database Java Packages UPGRADED 23.26.1.0.0 00:00:22
OLAP Analytic Workspace UPGRADED 23.26.1.0.0 00:00:15
Oracle Label Security UPGRADED 23.26.1.0.0 00:00:13
Oracle Database Vault UPGRADED 23.26.1.0.0 00:01:12
Oracle Text UPGRADED 23.26.1.0.0 00:00:51
Oracle Workspace Manager UPGRADED 23.26.1.0.0 00:01:29
Oracle Real Application Clusters UPGRADED 23.26.1.0.0 00:00:00
Oracle XML Database UPGRADED 23.26.1.0.0 00:01:40
Spatial UPGRADED 23.26.1.0.0 00:06:18
Oracle OLAP API UPGRADED 23.26.1.0.0 00:00:20
Datapatch 00:00:11
Final Actions 00:00:42
Post Upgrade 00:00:30
Total Upgrade Time: 00:54:25 [CON_ID: 3 => TESTPDB]
Database time zone version is currently at 32. It is older than the
latest time zone version data file 43 that is shipped in the target home.
Time zone upgrade is recommended using the DBMS_DST package.
Note that this message is printed before post upgrade fixups are run.
To review if a time zone upgrade is needed, query the database before updating
the time zone manually.
Use "select version from v$timezone_file" to query current database timezone ver
sion.
Use "select dbms_dst.get_latest_timezone_version from dual" to query the latest
timezone version in the target home.
Oracle Database Release 23 Post-Upgrade Status Tool 02-05-2026 13:32:5
Container Database: TEST
[CON_ID: 2 => PDB$SEED]
Component Current Full Elapsed Time
Name Status Version HH:MM:SS
Oracle Server UPGRADED 23.26.1.0.0 00:35:30
JServer JAVA Virtual Machine UPGRADED 23.26.1.0.0 00:05:59
Oracle XDK UPGRADED 23.26.1.0.0 00:02:13
Oracle Database Java Packages UPGRADED 23.26.1.0.0 00:00:22
OLAP Analytic Workspace UPGRADED 23.26.1.0.0 00:00:16
Oracle Label Security UPGRADED 23.26.1.0.0 00:00:13
Oracle Database Vault UPGRADED 23.26.1.0.0 00:01:12
Oracle Text UPGRADED 23.26.1.0.0 00:00:50
Oracle Workspace Manager UPGRADED 23.26.1.0.0 00:01:29
Oracle Real Application Clusters UPGRADED 23.26.1.0.0 00:00:00
Oracle XML Database UPGRADED 23.26.1.0.0 00:01:41
Spatial UPGRADED 23.26.1.0.0 00:06:20
Oracle OLAP API UPGRADED 23.26.1.0.0 00:00:20
Datapatch 00:00:10
Final Actions 00:00:55
Post Upgrade 00:00:30
Total Upgrade Time: 00:54:29 [CON_ID: 2 => PDB$SEED * ]
Asterisks denotes compilation time has been included during the upgrade process
unless invoked from AutoUpgrade.
Database time zone version is currently at 32. It is older than the
latest time zone version data file 43 that is shipped in the target home.
Time zone upgrade is recommended using the DBMS_DST package.
Note that this message is printed before post upgrade fixups are run.
To review if a time zone upgrade is needed, query the database before updating
the time zone manually.
Use "select version from v$timezone_file" to query current database timezone ver
sion.
Use "select dbms_dst.get_latest_timezone_version from dual" to query the latest
timezone version in the target home.
Upgrade Times Sorted In Descending Order
Total Upgrade Time: 00:54:29 [CON_ID: 2 => PDB$SEED * ]
Total Upgrade Time: 00:54:25 [CON_ID: 3 => TESTPDB]
Total Upgrade Time: 00:44:40 [CON_ID: 1 => CDB$ROOT * ]
Grand Total Upgrade Time: [0d:1h:44m:56s]

Check the database version:
sqlplus "/as sysdba"
SQL*Plus: Release 23.26.1.0.0 - Production on Thu Feb 5 19:34:40 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 name,version,status from v$database, v$instance;
NAME VERSION STATUS
--------- ----------------- ------------
TEST 23.0.0.0.0 OPEN
SQL>
Key Lessons Learned
- Always replace
autoupgrade.jarwith the latest version - Run ANALYZE before DEPLOY—no exceptions
ARCHIVE_MODE_ONerrors are often policy-based, not configuration issuesupg1.restoration=nois essential in many real-world environments- AutoUpgrade handles CDB + PDB upgrades cleanly and predictably
Final Thoughts
This successful Oracle Database 19c to 26ai upgrade using AutoUpgrade demonstrates why AutoUpgrade is the safest and most efficient method for modern Oracle environments.
With proper preparation, correct configuration, and attention to logs, you can confidently upgrade even complex RAC databases to Oracle 26ai—unlocking AI-native capabilities and long-term support.





why I am getting tthis error
UPG-3109 on DRAIN
Unable to stop current instance
Could you please share the full details of the issue with us at **[info@dbainsight.com](mailto:info@dbainsight.com)**? This will help us better understand the issue and provide the appropriate assistance.