Step by Step Upgrade Oracle Database 19c to 23ai Using AutoUpgrade

Oracle Database 23ai is the latest long-term support release packed with groundbreaking features like AI Vector Search, JSON Relational Duality, True Cache, Schema Privileges, and hundreds of developer productivity enhancements. If you're running Oracle Database 19c (and most of you are), now is the time to plan your upgrade.

Oracle E-Business Suite 12.2 was officially certified with Database 23ai in February 2026, starting with on-premises Exadata systems running Exadata Software 24.1 or later. The direct upgrade path exists only from 19c and 21c to 23ai — and the AutoUpgrade utility is now the only supported method. The old Database Upgrade Assistant (DBUA) has been desupported for 23ai upgrades.

In this post, I'll walk you through the complete upgrade process from Oracle Database 19c to 23ai using AutoUpgrade — covering planning, prerequisites, step-by-step execution, post-upgrade validation, and troubleshooting.


What is Oracle Database 23ai?

Oracle Database 23ai (the "ai" stands for Artificial Intelligence) is the successor to Oracle Database 19c and introduces over 300 new features focused on:

  • AI Vector Search — native vector data type and similarity search for generative AI and RAG (Retrieval-Augmented Generation) applications
  • JSON Relational Duality — use the same data as relational tables or JSON documents interchangeably
  • Schema-level Privileges — grant privileges on all objects in a schema with one command
  • True Cache — a consistent, read-only cache for your database
  • Developer Productivity — SQL domain types, direct joins to external tables, boolean data type, annotations, and more

Oracle Database 23ai Release Update 23.5 is the first production-ready version for on-premises deployments.


Why Upgrade from 19c to 23ai?

1) 19c Error Correction Support is ending
Oracle Database 19c entered Extended Support in April 2024. While it remains supported until 2027, you won't get error correction support for much longer if you're still on older RUs.

2) AI and Modern App Development
If you're building modern apps with AI, machine learning, or working with JSON-heavy workloads, 23ai is a must. The native vector search capability alone is game-changing.

3) EBS 12.2 Certification
If you run Oracle E-Business Suite 12.2, Oracle has certified it with 23ai on Exadata (and other platforms are coming). This opens the door to leverage AI features in your ERP environment.

4) Direct Upgrade Path
23ai only allows direct upgrades from 19c and 21c. If you're on 12c or 11g, you must first upgrade to 19c, then to 23ai. Don't delay.


What is AutoUpgrade?

AutoUpgrade is Oracle's recommended and only supported upgrade utility for Oracle Database 23ai. It automates the entire upgrade workflow:

  • Pre-upgrade analysis — identifies fixable issues and blockers
  • Automated fixups — applies fixes before upgrade
  • Upgrade execution — runs catupgrd.sql and all necessary scripts
  • Post-upgrade tasks — recompiles invalid objects, gathers dictionary stats, runs utlrp
  • Guaranteed Restore Point (GRP) support — enables flashback if something goes wrong
  • Multitenant support — upgrades CDBs and PDBs, or migrates non-CDB to PDB

AutoUpgrade runs in four modes: Analyze, Fixup, Deploy, and Upgrade. You can run all modes in sequence or separately.

The Database Upgrade Assistant (DBUA) that was used for 11g, 12c, and 19c upgrades is desupported for 23ai.


Planning Your Upgrade — Checklist

Before you touch any database, complete this planning checklist:

1.1 Verify Current Environment

Check your current Oracle Database version:

SQL> SELECT banner FROM v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Check if it's a non-CDB or CDB:

SQL> SELECT name, cdb, con_id FROM v$database;

NAME      CDB     CON_ID
--------- --- ----------
PRODDB    NO           0

Important: 23ai requires the multitenant architecture (CDB/PDB). If you have a non-CDB, AutoUpgrade can upgrade and convert it to a PDB in a single operation.

1.2 Review MOS Notes

  • MOS Note 2485457.1 — Download AutoUpgrade (latest version)
  • MOS Note 742060.1 — Release Schedule of Current Database Releases
  • MOS Note 2880697.1 — Database Upgrade Path Reference List (19c to 23ai)
  • MOS Note 2118136.2 — Oracle Database 23ai Known Issues

1.3 Check Certified Platforms

As of February 2026, Oracle Database 23ai is certified on:

  • Linux x86-64 (Oracle Linux 7, 8, 9 / RHEL 7, 8, 9)
  • Oracle Exadata Database Machine (Exadata Software 24.1 or later)
  • Oracle Cloud Infrastructure (OCI) — Base Database Service, Exadata Database Service

Other platforms (Solaris, AIX, Windows) are pending certification. Check MOS Note 742060.1 for the latest.

1.4 Backup Strategy

Mandatory backups before upgrade:

  1. Full RMAN backup of your 19c database
  2. Export of critical schemas using Data Pump
  3. Backup of configuration files: spfile, tnsnames.ora, listener.ora, password file
  4. Optional: Enable Guaranteed Restore Point (GRP) for instant flashback
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
RMAN> BACKUP SPFILE;
RMAN> LIST BACKUP SUMMARY;

1.5 Downtime Estimation

For a 500 GB production database on decent hardware:

  • Analyze mode: 10–20 minutes
  • Fixup mode: 5–15 minutes
  • Upgrade (Deploy mode): 1.5–3 hours (depends on object count, parallelism, and I/O speed)
  • Post-upgrade tasks: 30–60 minutes

Total downtime: 2.5–4.5 hours for a typical mid-size database.

Use parallelism (target_pdb_copy_option=8 in config) to reduce upgrade time.

1.6 Rollback Plan

AutoUpgrade supports Guaranteed Restore Point (GRP) for instant flashback if the upgrade fails:

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> FLASHBACK DATABASE TO RESTORE POINT BEFORE_UPGRADE;
SQL> ALTER DATABASE OPEN RESETLOGS;

Alternatively, restore from RMAN backup.


Prerequisites — What You Need Before Starting

Step 1: Download Oracle Database 23ai Software

Download Oracle Database 23ai from:
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

For production, download Oracle Database 23ai Release Update 23.5 or later.

Extract the software:

mkdir -p /u01/app/oracle/product/23.0.0/dbhome_1
cd /u01/app/oracle/product/23.0.0/dbhome_1
unzip -q /stage/LINUX.X64_23ai_db_home.zip

Step 2: Download Latest AutoUpgrade Utility

AutoUpgrade is not part of the 23ai installation. Download it separately from MOS Note 2485457.1 or oracle.com:

cd /home/oracle
wget https://updates.oracle.com/Orion/Services/download/p2485457_<platform>_<version>.zip
unzip autoupgrade.jar.zip

Verify AutoUpgrade version:

java -jar autoupgrade.jar -version

Always use the latest AutoUpgrade version (as of 2026, version 25.x is current).

Step 3: Install Oracle Database 23ai Software (Software-Only)

Run the installer in software-only mode (do NOT create a database):

cd /u01/app/oracle/product/23.0.0/dbhome_1
./runInstaller -silent \
  -responseFile /u01/app/oracle/product/23.0.0/dbhome_1/install/response/db_install.rsp \
  oracle.install.option=INSTALL_DB_SWONLY \
  UNIX_GROUP_NAME=oinstall \
  INVENTORY_LOCATION=/u01/app/oraInventory \
  ORACLE_HOME=/u01/app/oracle/product/23.0.0/dbhome_1 \
  ORACLE_BASE=/u01/app/oracle \
  oracle.install.db.InstallEdition=EE

Run root scripts:

sudo /u01/app/oraInventory/orainstRoot.sh
sudo /u01/app/oracle/product/23.0.0/dbhome_1/root.sh

Step 4: Apply Latest 23ai Release Update (Optional but Recommended)

Download the latest 23ai Release Update (RU) from MOS and apply it using OPatch:

export ORACLE_HOME=/u01/app/oracle/product/23.0.0/dbhome_1
cd /stage/35643107
$ORACLE_HOME/OPatch/opatch apply

Verify patch:

$ORACLE_HOME/OPatch/opatch lspatches

Step 5: Set Environment Variables

Set your environment to point to the 19c ORACLE_HOME (source):

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=PRODDB

Step 1: Create AutoUpgrade Configuration File

AutoUpgrade uses a configuration file that defines source and target homes, database details, and upgrade options.

Create a config file /home/oracle/autoupgrade_config.cfg:

#
# AutoUpgrade Configuration File for 19c to 23ai Upgrade
#

global.autoupg_log_dir=/home/oracle/autoupgrade_logs

upg1.dbname=PRODDB
upg1.start_time=NOW
upg1.source_home=/u01/app/oracle/product/19.0.0/dbhome_1
upg1.target_home=/u01/app/oracle/product/23.0.0/dbhome_1
upg1.sid=PRODDB
upg1.log_dir=/home/oracle/autoupgrade_logs
upg1.upgrade_node=prodserver
upg1.target_version=23.5
upg1.restoration=no
upg1.timezone_upg=yes
upg1.run_utlrp=yes
upg1.target_pdb_copy_option=8

Key Parameters Explained:

ParameterDescription
global.autoupg_log_dirDirectory for AutoUpgrade logs
upg1.dbnameDatabase name (from v$database)
upg1.source_homeCurrent 19c ORACLE_HOME
upg1.target_homeNew 23ai ORACLE_HOME
upg1.sidOracle SID
upg1.target_versionTarget DB version (23.5 = 23ai RU 23.5)
upg1.restorationEnable GRP for flashback (yes or no)
upg1.timezone_upgUpgrade timezone file (yes recommended)
upg1.run_utlrpRecompile invalid objects post-upgrade
upg1.target_pdb_copy_optionParallelism (use 4–8 for faster upgrade)

For non-CDB to PDB conversion, add:

upg1.target_cdb=CDB23AI
upg1.target_pdb_name=PRODPDB
upg1.target_pdb_copy_option=8

Step 2: Run AutoUpgrade in Analyze Mode

Analyze mode scans your 19c database and reports upgrade readiness, fixable issues, and blockers.

Run AutoUpgrade:

java -jar autoupgrade.jar -config /home/oracle/autoupgrade_config.cfg -mode analyze

Expected Output:

Autoupgrade tool launched with default options
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 databases will be analyzed
Type 'help' to list console commands

upg> Job 100 for PRODDB completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]

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

Please check the summary report at:
/home/oracle/autoupgrade_logs/cfgtoollogs/upgrade/auto/status/status.html
/home/oracle/autoupgrade_logs/PRODDB/100/autoupgrade_20261014_user.log
upg>

Review the HTML report:

firefox /home/oracle/autoupgrade_logs/cfgtoollogs/upgrade/auto/status/status.html

Common Issues Flagged:

IssueSeverityAuto-Fixable?
Deprecated parameters (optimizer_mode=RULE)WARNINGYes
Invalid objects in SYS/SYSTEMWARNINGYes (via utlrp)
Timezone file outdatedWARNINGYes (if timezone_upg=yes)
Underscore parameters (_optimizer_...)INFONo (review manually)
SQL Plan BaselinesINFONo action needed
Pluggable databases compatibilityERRORNo (manual fix required)

If any ERROR appears, you must fix it manually before proceeding.


Step 3: Run AutoUpgrade in Fixup Mode (Optional)

Fixup mode applies automatic fixes for issues flagged in Analyze mode.

java -jar autoupgrade.jar -config /home/oracle/autoupgrade_config.cfg -mode fixups

AutoUpgrade will:

  • Remove deprecated parameters from spfile
  • Update timezone file
  • Set recommended parameters for 23ai
  • Gather dictionary statistics

Expected Output:

Fixup mode finished successfully for PRODDB
Check fixup log: /home/oracle/autoupgrade_logs/PRODDB/101/autoupgrade_fixup.log

Step 4: Enable Guaranteed Restore Point (GRP) — Optional but Recommended

If you want instant rollback capability, enable a Guaranteed Restore Point before upgrade:

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER DATABASE OPEN;

SQL> CREATE RESTORE POINT BEFORE_UPGRADE GUARANTEE FLASHBACK DATABASE;

SQL> SELECT name, scn, time, guarantee_flashback_database 
     FROM v$restore_point;

NAME              SCN                TIME                GUARANTEE_FLASHBACK_DATABASE
----------------- ------------------ ------------------- ----------------------------
BEFORE_UPGRADE    3894756123         14-OCT-26 10:30:15  YES

Warning: GRP requires sufficient space in the Fast Recovery Area (FRA) to store flashback logs. Monitor space during upgrade.


Step 5: Run AutoUpgrade in Deploy Mode (Full Upgrade)

Deploy mode executes the complete upgrade: fixups, upgrade scripts (catupgrd.sql), timezone upgrade, recompilation, and post-upgrade checks.

Set environment to 19c home:

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=PRODDB

Run AutoUpgrade:

java -jar autoupgrade.jar -config /home/oracle/autoupgrade_config.cfg -mode deploy

What Happens During Deploy:

  1. Pre-upgrade Fixups — applies all automatic fixes
  2. Shutdown 19c database
  3. Startup database from 23ai home in UPGRADE mode
  4. Run catupgrd.sql — the main upgrade script (this takes the longest)
  5. Timezone upgrade (if enabled)
  6. Run utlrp.sql — recompile invalid objects
  7. Gather dictionary stats
  8. Post-upgrade validation
  9. Restart database in NORMAL mode from 23ai home

Expected Output:

+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+

Autoupgrade tool launched with default options
Processing config file ...
1 database(s) will be upgraded

Type 'help' to list console commands

upg> lsj
+----+-------+---------+---------+-------+----------+-------+
| Job|DB_NAME|   STAGE |OPERATION| STATUS|START_TIME|UPDATED|
+----+-------+---------+---------+-------+----------+-------+
| 102| PRODDB|PREFIXUPS|EXECUTING|RUNNING| 26/10/14 |1m ago |
+----+-------+---------+---------+-------+----------+-------+

upg> lsj
+----+-------+---------+---------+-------+----------+-------+
| Job|DB_NAME|   STAGE |OPERATION| STATUS|START_TIME|UPDATED|
+----+-------+---------+---------+-------+----------+-------+
| 102| PRODDB|DBUPGRADE|EXECUTING|RUNNING| 26/10/14 |15m ago|
+----+-------+---------+---------+-------+----------+-------+

upg> lsj
+----+-------+---------+---------+-------+----------+-------+
| Job|DB_NAME|   STAGE |OPERATION| STATUS|START_TIME|UPDATED|
+----+-------+---------+---------+-------+----------+-------+
| 102| PRODDB|POSTUPGRADE|EXECUTING|RUNNING| 26/10/14|2m ago|
+----+-------+---------+---------+-------+----------+-------+

upg> lsj
+----+-------+---------+---------+-------+----------+-------+
| Job|DB_NAME|   STAGE |OPERATION| STATUS|START_TIME|UPDATED|
+----+-------+---------+---------+-------+----------+-------+
| 102| PRODDB|COMPLETED|STOPPED  |SUCCESS| 26/10/14 |1m ago |
+----+-------+---------+---------+-------+----------+-------+

Job 102 completed
Upgrade Summary Report located at:
/home/oracle/autoupgrade_logs/cfgtoollogs/upgrade/auto/status/status.html

Upgrade typically takes 1.5–3 hours depending on database size, object count, and hardware.


Step 6: Post-Upgrade Validation and Verification

Once AutoUpgrade completes successfully, verify the upgrade.

6.1 Check Database Version

SQL> SELECT banner FROM v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - Production
SQL> SELECT version, version_full FROM v$instance;

VERSION    VERSION_FULL
---------- ------------------------------
23.0.0.0.0 23.5.0.24.07

6.2 Check Database Status

SQL> SELECT name, open_mode, cdb, version FROM v$database;

NAME      OPEN_MODE  CDB VERSION
--------- ---------- --- --------------
PRODDB    READ WRITE YES 23.0.0.0.0

6.3 Check for Invalid Objects

SQL> SELECT owner, object_type, COUNT(*) 
     FROM dba_objects 
     WHERE status = 'INVALID' 
     GROUP BY owner, object_type 
     ORDER BY 1, 2;

If any invalid objects exist, recompile them:

SQL> @?/rdbms/admin/utlrp.sql

6.4 Verify Registry Components

SQL> SELECT comp_name, version, status 
     FROM dba_registry 
     ORDER BY comp_name;

COMP_NAME                                VERSION    STATUS
---------------------------------------- ---------- -----------
Oracle Database Catalog Views            23.0.0.0.0 VALID
Oracle Database Packages and Types       23.0.0.0.0 VALID
Oracle JVM                               23.0.0.0.0 VALID
Oracle Real Application Clusters         23.0.0.0.0 VALID
Oracle Text                              23.0.0.0.0 VALID
Oracle Workspace Manager                 23.0.0.0.0 VALID
Oracle XML Database                      23.0.0.0.0 VALID

All components should show VALID status.

6.5 Check Timezone Version

SQL> SELECT * FROM v$timezone_file;

FILENAME                VERSION  CON_ID
----------------------- -------- -------
timezlrg_46.dat         46       0

Oracle 23ai ships with timezone version 46 (or later).

6.6 Verify Upgraded Features

Test new 23ai features to confirm they work:

Test Boolean Data Type:

SQL> CREATE TABLE test_23ai (id NUMBER, is_active BOOLEAN);
Table created.

SQL> INSERT INTO test_23ai VALUES (1, TRUE);
1 row created.

SQL> SELECT * FROM test_23ai;

        ID IS_ACTIVE
---------- ----------
         1 TRUE

Test Schema Privileges (New in 23ai):

SQL> CREATE USER testuser IDENTIFIED BY Oracle123;
SQL> GRANT CREATE SESSION TO testuser;
SQL> GRANT SELECT ANY TABLE ON SCHEMA hr TO testuser;

-- testuser can now SELECT from all HR schema tables

6.7 Review AutoUpgrade Summary Report

Open the HTML summary report:

firefox /home/oracle/autoupgrade_logs/cfgtoollogs/upgrade/auto/status/status.html

Check:

  • Upgrade duration
  • Number of errors/warnings
  • Final status (SUCCESS)

Step 7: Update Environment and Listener

7.1 Update oratab

Edit /etc/oratab to point to the new 23ai home:

Before:

PRODDB:/u01/app/oracle/product/19.0.0/dbhome_1:N

After:

PRODDB:/u01/app/oracle/product/23.0.0/dbhome_1:N

7.2 Update Listener

Stop the listener running from 19c home:

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
lsnrctl stop

Start the listener from 23ai home:

export ORACLE_HOME=/u01/app/oracle/product/23.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
lsnrctl start

Verify listener status:

lsnrctl status

7.3 Update Profile / .bashrc

Update your .bashrc or .bash_profile:

export ORACLE_HOME=/u01/app/oracle/product/23.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

Reload:

source ~/.bashrc

Step 8: Gather Database Statistics (Recommended)

After upgrade, gather fresh database statistics for optimal performance:

SQL> EXEC DBMS_STATS.GATHER_DATABASE_STATS(
       estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
       method_opt => 'FOR ALL COLUMNS SIZE AUTO',
       degree => 8,
       cascade => TRUE
     );

This can take 30–60 minutes for a large database. Run it during a maintenance window.


Step 9: Drop Guaranteed Restore Point (If Enabled)

If you created a GRP before upgrade and the upgrade is successful, drop the restore point to free up space in the FRA:

SQL> SELECT name, scn, guarantee_flashback_database 
     FROM v$restore_point;

SQL> DROP RESTORE POINT BEFORE_UPGRADE;

Restore point dropped.

Warning: Once you drop the GRP, you cannot flashback. Ensure all testing is complete.


Troubleshooting — Common Errors and Fixes

⚠️ Issue 1: AutoUpgrade Fails with ORA-00904: Invalid Column Name

Root Cause: Deprecated or renamed data dictionary views.

Fix:

Check the AutoUpgrade log:

tail -100 /home/oracle/autoupgrade_logs/PRODDB/102/autoupgrade_err.log

Manually run the failing SQL from 23ai home and fix the issue.


⚠️ Issue 2: ORA-39700: Database Must Be Opened with UPGRADE Option

Root Cause: Database was not started in UPGRADE mode during AutoUpgrade execution.

Fix:

AutoUpgrade handles this automatically. If you see this error, restart the database manually in UPGRADE mode:

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP UPGRADE;

Then re-run AutoUpgrade in deploy mode.


⚠️ Issue 3: utlrp.sql Runs Forever (Recompilation Stuck)

Root Cause: High number of invalid objects or insufficient parallelism.

Fix:

Kill the utlrp session and run it manually with higher parallelism:

SQL> @?/rdbms/admin/utlrp.sql

Or run in parallel using PL/SQL:

SQL> EXEC UTL_RECOMP.RECOMP_PARALLEL(8);

⚠️ Issue 4: Timezone Upgrade Fails

Root Cause: Timezone data in SYS.TSTZ$ is inconsistent.

Fix:

Check the AutoUpgrade log for the exact error. You may need to manually upgrade the timezone using DBMS_DST:

SQL> SELECT * FROM v$timezone_file;

SQL> EXEC DBMS_DST.BEGIN_UPGRADE(46);
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP UPGRADE;
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
       l_failures PLS_INTEGER;
     BEGIN
       DBMS_DST.UPGRADE_DATABASE(l_failures);
       DBMS_OUTPUT.PUT_LINE('Failures: ' || l_failures);
     END;
     /
SQL> EXEC DBMS_DST.END_UPGRADE;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

Refer to MOS Note 1585343.1 for detailed timezone upgrade steps.


⚠️ Issue 5: AutoUpgrade Hangs at DBUPGRADE Stage

Root Cause: Large database with many objects, slow I/O, or insufficient parallelism.

Fix:

Increase parallelism in the config file:

upg1.target_pdb_copy_option=12

Monitor progress by tailing the catupgrade log:

tail -f /home/oracle/autoupgrade_logs/PRODDB/102/dbupgrade/catupgrd*.log

If it's truly stuck, check for blocking sessions:

SQL> SELECT sid, serial#, username, status, event 
     FROM v$session 
     WHERE username IS NOT NULL;

⚠️ Issue 6: Post-Upgrade Application Fails with ORA-00904

Root Cause: Application uses deprecated features or SQL syntax not supported in 23ai.

Fix:

Identify the failing SQL statement and check Oracle 23ai Deprecations in the official documentation:

https://docs.oracle.com/en/database/oracle/oracle-database/23/upgrade.html

Common deprecated features in 23ai:

  • LONG columns (migrate to CLOB)
  • Oracle Streams (use GoldenGate or Data Guard)
  • SQL*Net V1 protocol

Rewrite or patch the application code.


Best Practices — Upgrade Oracle 19c to 23ai

✅ 1. Always Test in Non-Production First
Upgrade a DEV or UAT database first. Verify application compatibility. Then upgrade PROD.

✅ 2. Use the Latest AutoUpgrade Version
Oracle releases AutoUpgrade updates frequently. Always download the latest from MOS Note 2485457.1 before starting.

✅ 3. Enable Guaranteed Restore Point for PROD Upgrades
GRP gives you instant rollback capability. Worth the FRA space cost.

✅ 4. Monitor Disk Space and FRA
Upgrade generates significant redo and flashback logs. Monitor:

SQL> SELECT * FROM v$recovery_file_dest;

✅ 5. Use Parallelism to Speed Up Upgrade
Set target_pdb_copy_option=8 (or higher) in the AutoUpgrade config file.

✅ 6. Review All AutoUpgrade Logs After Completion
Even if the upgrade succeeds, review the logs for warnings about deprecated features, underscore parameters, or unsupported configurations.

✅ 7. Gather Fresh Statistics After Upgrade
Oracle 23ai has a new optimizer. Gather statistics after upgrade for accurate execution plans.

✅ 8. Update Backup Strategy for 23ai
After upgrade, take a fresh RMAN backup and update your backup scripts to use the 23ai home.

RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;

✅ 9. Patch to the Latest 23ai RU Immediately
Don't stay on base 23ai. Apply the latest Release Update (RU) right after upgrade for bug fixes and security patches.

✅ 10. Read the 23ai Documentation
Familiarize yourself with new features, deprecated parameters, and new initialization parameters:

https://docs.oracle.com/en/database/oracle/oracle-database/23/upgrade.html


Summary

Upgrading from Oracle Database 19c to 23ai using AutoUpgrade is straightforward if you follow the planning checklist and execute each step carefully. Here's the quick recap:

  1. Plan — Review MOS notes, take backups, estimate downtime
  2. Download — Get Oracle 23ai software, latest AutoUpgrade, and latest RU
  3. Install — Software-only install of 23ai, apply RU
  4. Analyze — Run AutoUpgrade in analyze mode, fix any blockers
  5. Fixup — Run AutoUpgrade in fixup mode (optional)
  6. Upgrade — Run AutoUpgrade in deploy mode
  7. Validate — Check version, invalid objects, registry, and new features
  8. Cleanup — Update oratab, listener, and drop GRP
  9. Optimize — Gather stats, test application, apply latest RU

Oracle Database 23ai brings over 300 new features that will transform how you build modern applications — especially with AI Vector Search, JSON Relational Duality, and True Cache. If you're on 19c, now is the perfect time to upgrade.

Please do like and subscribe to my youtube channel: https://www.youtube.com/@foalabs If you like this post please follow,share and comment


FAQ

Q1: Can I upgrade directly from Oracle 12c to 23ai?
No. Oracle Database 23ai only supports direct upgrades from 19c and 21c. If you're on 12c, you must first upgrade to 19c, then to 23ai.

Q2: Is DBUA supported for Oracle 23ai upgrades?
No. The Database Upgrade Assistant (DBUA) has been desupported for Oracle 23ai upgrades. You must use AutoUpgrade.

Q3: Can I upgrade a non-CDB to 23ai?
Yes, but 23ai requires the multitenant architecture. AutoUpgrade can upgrade your non-CDB and convert it to a PDB in a new CDB in a single operation. Add target_cdb and target_pdb_name to your config file.

Q4: How long does an AutoUpgrade take?
For a typical 500 GB database, expect 2.5–4 hours total. The actual upgrade time depends on the number of objects, I/O speed, and parallelism settings.

Q5: Can I rollback if the AutoUpgrade fails?
Yes, if you enabled a Guaranteed Restore Point (GRP) before upgrade, you can instantly flashback. Otherwise, restore from your RMAN backup. AutoUpgrade does NOT automatically create a GRP — you must do it manually.

Q6: What is the latest Oracle Database 23ai Release Update?
As of October 2026, Release Update 23.9 is the latest. Always apply the latest RU after upgrade. Check MOS Note 742060.1 for the current RU schedule.

Q7: Does Oracle 23ai support my EBS 12.2 environment?
Yes, Oracle E-Business Suite 12.2 is certified with Database 23ai on Exadata Database Machine running Exadata Software 24.1 or later (as of Feb 2026). Other platforms are pending certification. Check the EBS Tech Blog for updates.


Suggested Internal Links (anchor text → URL from existing FOA posts):

  1. "Upgrading an Oracle EBS 12.2.10 Database from 12c to 19c" → https://www.funoracleapps.com/2022/03/upgrading-oracle-ebs-1224-database.html
    (Link from the "Direct Upgrade Path" section)

  2. "Step by Step: Provision an Autonomous Database in OCI" → https://www.funoracleapps.com/2025/05/step-by-step-provision-autonomous.html
    (Link from the "AI Vector Search" feature discussion)

  3. "Oracle 11g AUD$ Table Maintenance After ORA-01653" → https://www.funoracleapps.com/2022/oracle-11g-aud-table-maintenance.html
    (Link from troubleshooting section discussing dictionary space issues)

  4. "How to Find Why CRS/CSSD Rebooted a Server in Oracle RAC" → https://www.funoracleapps.com/2022/how-to-find-why-crscssd-rebooted.html
    (Link from the RAC upgrade considerations in prerequisites)


Suggested Images / Diagrams (descriptions + alt text):

  1. AutoUpgrade Workflow Diagram
    Description: Flowchart showing the four AutoUpgrade modes (Analyze → Fixup → Deploy → Upgrade) with decision points
    Alt text: "Oracle AutoUpgrade workflow diagram showing analyze, fixup, deploy, and upgrade modes"

  2. Before and After Architecture Comparison
    Description: Side-by-side comparison of 19c non-CDB vs. 23ai CDB/PDB architecture
    Alt text: "Oracle Database 19c non-CDB to 23ai CDB PDB architecture comparison"

  3. AutoUpgrade Console Screenshot
    Description: Screenshot of AutoUpgrade running in console mode showing job status (lsj command output)
    Alt text: "Oracle AutoUpgrade console showing upgrade job status for database PRODDB"

  4. 23ai New Features Infographic
    Description: Visual list of top 10 Oracle 23ai features (AI Vector Search, JSON Duality, True Cache, Boolean, Schema Privileges, etc.)
    Alt text: "Oracle Database 23ai top new features including AI Vector Search and JSON Relational Duality"