top of page

Oracle 19c Non-CDB to 26ai PDB Upgrade Using AutoUpgrade — Step-by-Step Lab (Same Host)

Oracle 19c Non-CDB to 26ai PDB Upgrade Using AutoUpgrade — Step-by-Step Lab (Same Host)



If you're an Oracle DBA still running 19c databases and wondering whether the jump to Oracle AI Database 26ai is going to eat your weekend, this post is for you. In our brand-new YouTube tutorial — the first video under our rebranded DBNexus Training & Consulting channel (formerly Oracle DBA Online Training) — we take a real 19c non-CDB database and upgrade it into a 26ai pluggable database (PDB) on the same host using Oracle's recommended AutoUpgrade tool in deploy mode. Total upgrade time: ~26 minutes.





▶︎ Watch on YouTube: https://youtu.be/NDeDJXdDGV8 |

🔔 Subscribe to @OracleDBAOnlineTraining so you don't miss Cases 2, 3 and 4 of this series.


What's in this video:


Source: Oracle 19c non-CDB ('test', version 19.28.0.0.0).

Target: Oracle AI Database 26ai CDB ('CDB26') with new PDB 'TESTPDB_NEW'.


Method: AutoUpgrade in deploy mode (single config file, single command).


Host: Same Linux host — no cross-server transfer needed.

Elapsed time: 26 min 17 sec total, with DBUPGRADE stage taking 25 min 31 sec.

Result: 12 components VALID, 0 invalid objects, fully running on 26ai.


📚 Get the complete step-by-step lab document (commands, config files, validations, rollback) at minimum charges on our store: https://www.dbnexus.co.in/product-page/oracle-dba-youtube-video-related-documents


📝 NOTE: Full content to paste in Wix Blog Editor



Why Oracle 26ai matters in 2026

Oracle Database 26ai isn't just another release — it's the AI-native generation of the database that has powered enterprise workloads for four decades. Three reasons you should care right now:

(1) Native vector search and JSON-relational duality let your existing OLTP applications adopt AI features without bolting on a separate vector DB.

(2) The end of the non-CDB era — from 21c onwards Oracle deprecated non-CDB architecture; 26ai is multitenant-only, so if you're still on a 19c non-CDB, you cannot continue as-is.

(3) Long-term support window — 19c Extended Support is winding down; 26ai gives you the longest support runway available.


The Environment We Used in the Lab


Source SID: test (19c non-CDB, 19.28.0.0.0) |

Source ORACLE_HOME: /u01/app/oracle/product/19c/dbhome_1 |

Source datafiles: /u02/app/oracle/oradata/TEST |

Target CDB: CDB26 (26ai, 23.26.1.0.0) |

Target ORACLE_HOME: /u01/app/oracle/product/26ai/dbhome_1 |

Target PDB name: TESTPDB_NEW |

Target datafiles: /u02/app/oracle/oradata/CDB26/testpdb_new |

FRA (both DBs): /backup/FRA |

RMAN backups: /backup/RMAN |

AutoUpgrade work dir: /u01/app/oracle/autoupgrade


The 10 Steps We Walk Through in the Video

Below is the high-level outline of every stage of the upgrade. Use the chapter timestamps to jump directly to the section you need in the video.

Step 1 — OS prerequisites (0:06:00)

bash

dnf install -y oracle-ai-database-preinstall-26ai
yum update -y

mkdir -p /backup/FRA /backup/RMAN
mkdir -p /u02/app/oracle/oradata/TEST
mkdir -p /u02/app/oracle/oradata/CDB26/testpdb_new
chown -R oracle:oinstall /backup /u02/app/oracle/oradata

Step 2 — Stage the 26ai software ZIP (0:06:00)

bash

mkdir -p /u01/app/oracle/product/26ai/dbhome_1
chown -R oracle:oinstall /u01/app/oracle/product/26ai
cd /media/sf_26ai_Soft
cp LINUX.X64_2326100_db_home.zip /u01/app/oracle/product/26ai/dbhome_1/

Step 3 — Silent install of the 26ai binaries (0:09:00)

bash

cd $ORACLE_HOME
unzip -oq LINUX.X64_2326100_db_home.zip

./runInstaller -ignorePrereq -waitforcompletion -silent \
   -responseFile ${ORACLE_HOME}/install/response/db_install.rsp \
   installOption=INSTALL_DB_SWONLY \
   ORACLE_HOME=${ORACLE_HOME} ORACLE_BASE=${ORACLE_BASE} \
   installEdition=EE

# Then as root:
/u01/app/oracle/product/26ai/dbhome_1/root.sh

Step 4 — Replace the shipped autoupgrade.jar (0:12:00) — CRITICAL

The single most important habit in any AutoUpgrade-based upgrade: download the latest jar from Oracle before you do anything. The version shipped inside the Oracle Home is often months old and missing fixes that affect prechecks.

bash

cd $ORACLE_HOME/rdbms/admin
mv autoupgrade.jar autoupgrade.jar.shipped.`date +%Y%m%d`
wget https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar
$ORACLE_HOME/jdk/bin/java -jar autoupgrade.jar -version

Step 5 — Create the empty 26ai container database CDB26 (0:14:30)

bash

dbca -silent -createDatabase \
  -templateName General_Purpose.dbc \
  -gdbname CDB26 -sid CDB26 \
  -sysPassword Oracle_123 -systemPassword Oracle_123 \
  -createAsContainerDatabase true -numberOfPDBs 0 \
  -datafileDestination "/u02/app/oracle/oradata/CDB26" \
  -recoveryAreaDestination "/backup/FRA" -recoveryAreaSize 40960 \
  -characterSet AL32UTF8 -totalMemory 2048 \
  -emConfiguration NONE -ignorePreReqs

Step 6 — Pre-flight on the source non-CDB and RMAN backup (0:17:30)

sql

SQL> select name, cdb, open_mode from v$database;   -- cdb must be NO
SQL> select * from v$version;                        -- 19.28.0.0.0
SQL> purge dba_recyclebin;
SQL> exec dbms_stats.gather_dictionary_stats;

Then take a fresh RMAN backup to /backup/RMAN as insurance.

Step 7 — Build the AutoUpgrade configuration file (0:20:00)

This is the single file that drives the entire upgrade. Note the two parameters that turn it from a regular upgrade into a non-CDB-to-PDB conversion: target_cdb and target_pdb_name.

properties

# /u01/app/oracle/autoupgrade/config_case1.cfg

global.autoupg_log_dir=/u01/app/oracle/autoupgrade/logs

upg1.sid=test
upg1.source_home=/u01/app/oracle/product/19c/dbhome_1
upg1.target_home=/u01/app/oracle/product/26ai/dbhome_1
upg1.target_cdb=CDB26
upg1.target_pdb_name=TESTPDB_NEW
upg1.log_dir=/u01/app/oracle/autoupgrade
upg1.start_time=NOW
upg1.run_utlrp=yes
upg1.timezone_upg=yes
upg1.target_version=26

# Move converted PDB datafiles into the CDB26 standard location:
upg1.target_pdb_copy_option=file_name_convert=('/u02/app/oracle/oradata/TEST','/u02/app/oracle/oradata/CDB26/testpdb_new')

Step 8 — Run AutoUpgrade in analyze mode (0:22:30)

bash

$ORACLE_BASE/product/26ai/dbhome_1/jdk/bin/java \
  -jar $ORACLE_BASE/product/26ai/dbhome_1/rdbms/admin/autoupgrade.jar \
  -config /u01/app/oracle/autoupgrade/config_case1.cfg -mode analyze

Analyze is read-only — re-run it as many times as needed. Fix any Manual intervention needed items in the report before moving to deploy.

Step 9 — Run AutoUpgrade in deploy mode (0:24:00)

bash

$ORACLE_BASE/product/26ai/dbhome_1/jdk/bin/java \
  -jar $ORACLE_BASE/product/26ai/dbhome_1/rdbms/admin/autoupgrade.jar \
  -config /u01/app/oracle/autoupgrade/config_case1.cfg -mode deploy

Inside the upg> prompt you can use:

  • lsj — list jobs

  • status -job <N> — detailed progress per container

  • tasks — running tasks

  • exit — detach (the upgrade keeps running in the background)

The stages you'll see flow through: SETUP → GRP → PREUPGRADE → PRECHECKS → PREFIXUPS → DRAIN → DBUPGRADE → UNPLUGWORK → POSTCHECKS → POSTFIXUPS → POSTUPGRADE → SYSUPDATES.

Step 10 — Post-upgrade validation (0:29:00)

sql

SQL> select name, cdb, open_mode, version from v$database, v$instance;
NAME      CDB OPEN_MODE       VERSION
CDB26     YES READ WRITE      23.0.0.0.0

SQL> show pdbs
     CON_ID  CON_NAME        OPEN MODE   RESTRICTED
          2  PDB$SEED        READ ONLY   NO
          3  TESTPDB_NEW     READ WRITE  NO

SQL> alter session set container=TESTPDB_NEW;
SQL> select comp_id, version, status from dba_registry order by 1;
-- 12 components, all VALID

SQL> select count(*) invalids from dba_objects where status='INVALID';
   0

SQL> alter pluggable database TESTPDB_NEW save state;

Update /etc/oratab, drop the Guaranteed Restore Point only after application sign-off, and you're live on 26ai.


Common Pitfalls You Should Watch For

The video covers these live but here is a quick checklist:

  • Stale autoupgrade.jar — always replace the shipped copy with the latest from download.oracle.com. Skipping this is the most common cause of "AutoUpgrade missed an issue."

  • FRA undersized — the Guaranteed Restore Point goes into FRA. If it overflows, the upgrade aborts mid-flight. Set db_recovery_file_dest_size to at least 2× your source database size before starting.

  • target_cdb + target_pdb_name missing — without these two parameters AutoUpgrade thinks you want a standard in-place upgrade and won't perform the non-CDB conversion.

  • ORACLE_SID pointed at the wrong instance — keep ORACLE_SID=test (the source) when invoking autoupgrade.jar from the 26ai HOME. AutoUpgrade reads source state via the source $ORACLE_HOME.

  • Re-using an old AutoUpgrade work directory — if a previous job failed there, AutoUpgrade refuses to start a new one. Use a fresh log_dir per database, or -clear_recovery_data -jobs <N> to reset.

  • /etc/oratab not updated — your databases will start from the OLD home after a reboot. Update it before you hand back the server.

What's Next in This Series

This is Case 1 of a four-part Oracle 26ai upgrade series:

Case

Scenario

Status

Case 1

non-CDB 19c → CDB 26ai (same host)

Published — this video

Case 2

CDB 19c → CDB 26ai (same host, in place)

Coming next

Case 3

non-CDB 19c → CDB 26ai (cross host, unplug/plug)

Coming soon

Case 4

CDB 19c → CDB 26ai (cross host, unplug/plug)

Coming soon

Subscribe to @OracleDBAOnlineTraining and ring the bell — Case 2 includes a real "Previous execution found" challenge we hit live, and the one-line fix that saved the upgrade. You don't want to miss it.


Frequently Asked Questions (FAQ)


Q. Can I upgrade a 19c non-CDB directly to 26ai without going through 21c or 23ai? Yes. Oracle supports a direct upgrade from 19c to 26ai using AutoUpgrade. No intermediate hop is required.


Q. Will my application connect strings keep working after the upgrade? The database service name changes — your old test connection becomes a PDB service (e.g. TESTPDB_NEW) inside CDB26. Update tnsnames.ora and application connection strings to point at the new service. Easy gain: use the alter session set container=TESTPDB_NEW; syntax in scripts while you migrate.


Q. How big does my FRA need to be? At a minimum, 2× the size of the source database, plus headroom for archive logs generated during the upgrade. The Guaranteed Restore Point lives in FRA and is the single biggest space consumer.


Q. Can I roll back the upgrade if something goes wrong? Yes — AutoUpgrade automatically creates a Guaranteed Restore Point (GRP) before the upgrade starts. To roll back:

bash

java -jar autoupgrade.jar -config config_case1.cfg -restore

Important: only drop the GRP after your application team signs off.


Q. Does this same approach work for a CDB upgrade (no non-CDB conversion)? Mostly yes — you just remove target_cdb and target_pdb_name from the config file. We cover the exact CDB-to-CDB workflow in Case 2 of this series.


Q. Where can I get the complete commands file? The full step-by-step lab document (every command, every config file, every validation query, plus rollback steps) is available at minimum charges on the DBNexus website: 👉 https://www.dbnexus.co.in/product-page/oracle-dba-youtube-video-related-documents

Q. Do you offer live upgrade support for my project? Yes. DBNexus provides 1-on-1 mentoring, corporate training, and live consulting on production Oracle upgrades. Reach us on WhatsApp +91 8169158909 or email support@dbnexus.co.in.


Work With DBNexus Training & Consulting


🌐 Website: https://www.dbnexus.co.in

📚 Lab documents at minimum charges:

📞 WhatsApp / Call: +91 8169158909

📧 Email: support@dbnexus.co.in

🎬 YouTube: @OracleDBAOnlineTraining



Categories: Oracle Database Upgrades, Hands-On Labs, 26ai

Comments


bottom of page