Select Page

Migrating from Oracle Database 11.2.0.2 and Beyond to Oracle AI Database 26ai

Author: Zane Warton | 12 min read | December 29, 2025

Upgrading your Oracle database from version 11.2.0.2 to the latest Oracle AI Database 26ai release gives you access to the cutting-edge functionality that Oracle is delivering to this data platform.

This guide will walk you through setting up a new Oracle Enterprise Linux (OEL) 8.7 environment to support 11g, 19c, and 26ai database software. I’ll also highlight some noteworthy features and benefits of 26ai.

Why Upgrade to Oracle AI Database 26ai?

Enhanced Performance: Optimized for faster speeds, reduced latency, and improved response times.

Advanced AI Integration: Features built-in machine learning and Oracle AI Vector Search for in-database artificial intelligence and predictive analytics.

Real-Time Analytics: Instantly processes data to deliver immediate insights and actionable results.

Stronger Security: Includes advanced encryption, multi-factor authentication (MFA), real-time threat detection, and secure AI execution.

Broader Compatibility: Supports a wider range of platforms and integrates seamlessly with modern tools, including enhanced Java support.

Shrink Tablespace: Efficiently reclaims unused space to reduce storage costs.

Automatic Transaction Rollback: Prevents long-running jobs from blocking critical transactions by automatically rolling back problematic transactions.

Fast Ingest Upgrades: Improves performance for partitioned, compressed, and in-memory data loads.

Real-Time SQL Plan Management: Automatically detects and corrects performance regressions in SQL plans.

SQL Analysis Reports: Provides actionable recommendations for developers to optimize SQL code.

True Cache: Offers a self-managed in-memory cache for enhanced performance and scalability.

How to Upgrade to Oracle AI Database 26ai

One way to upgrade directly from any 10g, 11g, or 12c Oracle database is using datapump (exp/expdp) to create a logical export of the source data and import it directly into a 26ai database.

This process has significant disadvantages with particularly large or busy databases, so here we will be using a RMAN backup and upgrading to 26ai by using the traditional 11g upgrade script and the autoupgrade utility for the 19c and 26ai processes.

Upgrading to Oracle 26ai requires a 19c/21c database source and upgrading to 19c requires a version such as 11.2.0.4, 12.1.0.2, 12.2.0.1, or 18.

Overview of the Oracle Database 11.2.0.2 to 26ai Migration Process

  • Setup a new Linux server.
  • Install 11.2.0.4.
  • Restore your database from an RMAN backup.
  • Upgrade your database to 11.2.0.4 from 11.2.0.2.
  • Install and patch 19c.
  • Upgrade from 11g to 19c using autoupgrade.
  • Install Oracle AI Database 26ai.
  • Create a 26ai Container database (CDB).
  • Migrate and upgrade 19c into that CDB as a PDB database.

Migration Assumptions

  • You have an RMAN backup of your 11.2.0.2 database that includes the control file and spfile.
  • We will be setting up a new server, using Oracle Enterprise Linux 8.7.
  • We will be using Oracle’s Virtual Box to host the new server image, but you can extrapolate this to a compute instance on VMWare, AWS, OCI, or Azure.
  • For more details in depth please review the 11g/19c/26ai documentation and install guides.

OEL 8.7 Server Setup and configuration

As part of the upgrade process, and to perform this demo, we will set up a new Oracle Enterprise Linux (OEL) 8.7 server using Oracle’s Virtual Box.

Download Installation Media

Download the OEL 8.7 ISO image from Oracle’s software delivery cloud.

You can also download the 26ai, 19c, and 11.2.0.4 database install files from this location.

Setup Virtual Box Instance

  • Create a new Server, name it something (ol8 for me), set the Type is: Linux, Version: Oracle Linux 64 bit.
  • Select the ISO you just downloaded to boot with.
  • 10 GB Memory, 4 vCPU
  • 300 GB Virtual hard disk, not pre-allocated
  • I use a bridged network connection so I can connect to it with putty.

Install OEL 8.9

  • Begin Installation: Select “Install Oracle Linux 8.7” and proceed with the guided setup.
  • Partition Disks: To keep it simple, I just save 10 GB of disk for swap and put the rest under /
  • Select Software Packages: Choose the Server only install option, or “Server with GUI” if you prefer.
  • Configure Network: Enable the virtual network card.

Post-Installation Setup

Update the System: Once the installation is complete, update the system using “yum update”

Install Required Dependencies (this is a shortcut for many of the requirements for all 3 versions):

yum update
yum -y install oracle-database-preinstall-19c.x86_64 perl.x86_64

mkdir -p /u01 /oracle
chown oracle:oinstall /u0* /oracle

11.2.0.4 Installation

11g will require these additional packages:

yum install -y gcc.x86_64 glibc glibc-devel

curl -o libaio-0.3.109-13.el7.i686.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/libaio-0.3.109-13.el7.i686.rpm
curl -o libaio-0.3.109-13.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/libaio-0.3.109-13.el7.x86_64.rpm
curl -o libaio-devel-0.3.109-13.el7.i686.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/libaio-devel-0.3.109-13.el7.i686.rpm
curl -o libaio-devel-0.3.109-13.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/libaio-devel-0.3.109-13.el7.x86_64.rpm

yum -y localinstall libaio-0.3.109-13.el7.i686.rpm
yum -y localinstall libaio-0.3.109-13.el7.x86_64.rpm
yum -y localinstall libaio-devel-0.3.109-13.el7.x86_64.rpm
yum -y localinstall libaio-devel-0.3.109-13.el7.i686.rpm

Now we install 11g. As the Oracle id, download installation software to /u01/inst, and unzip there.

cd /u01/inst/database
mkdir -p /u01/app/oracle/product/11

./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -waitforcompletion -showProgress \
FROM_LOCATION=/u01/inst/database/stage/products.xml \
oracle.install.option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=/u01/app/oraInventory \
ORACLE_HOME=/u01/app/oracle/product/11 \
ORACLE_HOME_NAME="OraDb11g_Home1" \
ORACLE_BASE=/u01/app/oracle \
oracle.install.db.InstallEdition=EE \
oracle.install.db.isCustomInstall=false \
oracle.install.db.DBA_GROUP=oinstall \
oracle.install.db.OPER_GROUP=oinstall \
DECLINE_SECURITY_UPDATES=true

Run the required root scripts mentioned at the end of the install.

Restore the Database Directly to 11.2.0.4

Add an entry to your /etc/oratab for your database name.

echo "bob:/u01/app/oracle/product/11:N" >> /etc/oratab
. oraenv

Copy your backup files to a suitable location (I used /u02/backup).

Make some required directories (you may need to restore spfile first, to adjust locations or create the right places.)

mkdir -p /oracle/admin/bob/adump/bob /oracle/oradata /oracle/oradata/BOB/controlfile /oracle/fra

Restore from your RMAN backup.

rman target /

startup nomount;

restore spfile from '/u02/backup/bob_COLD_102vit1e_1_1_20240710_1628.bus';

shutdown immediate;

startup nomount;

restore controlfile from '/u02/backup/bob_CTRL_112vit27_1_1_20240710_1628.bus';
alter database mount;

CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;

restore database;
recover database;  --- Here is where you could potentially do multiple rounds of recovery, if you're restoring from a large database backup.

Upgrade Database to 11.2.0.4

Now we open in upgrade mode and upgrade the system to 11.2.0.4.

sqlplus / as sysdba
alter database open resetlogs upgrade;

cd $ORACLE_HOME/rdbms/admin

sqlplus / as sysdba
spool /tmp/upgrade.log
set echo on
@catupgrd.sql

Then start the instance for the next step.

startup mount

ORACLE instance started.

Total System Global Area  626327552 bytes
Fixed Size                 2255832 bytes
Variable Size             335545384 bytes
Database Buffers          281018368 bytes
Redo Buffers                7507968 bytes

Database mounted.
alter database archivelog;

Database opened.

Install 19c

Create a path for 19c, unzip the database, and install.

mkdir /u01/app/oracle/product/19
cd /u01/inst
unzip -q 19c_db_V982063-01.zip -d /u01/app/oracle/product/19

export ORACLE_HOME=/u01/app/oracle/product/19
export INST_DIR=/u01/inst
export ORACLE_BASE=/u01/app/oracle
export ORACLE_GROUP=oinstall
export EDITION=EE
export CV_ASSUME_DISTID=OEL8.5

cd $ORACLE_HOME
./runInstaller -waitforcompletion -silent \
  oracle.install.option=INSTALL_DB_SWONLY \
  ORACLE_HOSTNAME=${ORACLE_HOSTNAME} \
  UNIX_GROUP_NAME=${ORACLE_GROUP} \
  SELECTED_LANGUAGES=en \
  ORACLE_HOME=${ORACLE_HOME} \
  ORACLE_BASE=${ORACLE_BASE} \
  oracle.install.db.InstallEdition=${EDITION} \
  oracle.install.db.OSDBA_GROUP=${ORACLE_GROUP} \
  oracle.install.db.OSBACKUPDBA_GROUP=${ORACLE_GROUP} \
  oracle.install.db.OSDGDBA_GROUP=${ORACLE_GROUP} \
  oracle.install.db.OSKMDBA_GROUP=${ORACLE_GROUP} \
  oracle.install.db.OSRACDBA_GROUP=${ORACLE_GROUP} \
  SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
  DECLINE_SECURITY_UPDATES=true
bob:> sudo /u01/app/oracle/product/19/root.sh

Check /u01/app/oracle/product/19/install/root_ol8_2024-07-11_16-20-02-692938618.log for the output of the root script.

Patch Oracle 19c Database to 19.23

Download the required patches and patch the database. This also gives you a new version of the autoupgrade.jar file.

You can use wget to download the patch files.

cd /u01/inst

wget --http-user="[email protected]" --http-password="password" --output-document="19.24-db-p36582781_190000_Linux-x86-64.zip" https://updates.oracle.com/Orion/Services/download/p36582781_190000_Linux-x86-64.zip?aru=25751445&patch_file=p36582781_190000_Linux-x86-64.zip

wget --http-user="[email protected]" --http-password="password" --output-document="p6880880_190000_Linux-x86-64.zip" "https://updates.oracle.com/Orion/Download/process_form/p6880880_190000_Linux-x86-64.zip?file_id=112014090&aru=25200703&[email protected]&[email protected]&patch_password=&patch_file=p6880880_190000_Linux-x86-64.zip"

Install the patches. Set the 19c environment for the patch and unzip the patches.

echo 19:/u01/app/oracle/product/19:N >> /etc/oratab
. oraenv   # enter 19

unzip -q 19.23-db-p36233263_190000_Linux-x86-64.zip
unzip -q 19.23-jvm-p36199232_190000_Linux-x86-64.zip
unzip -oq p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME

$ORACLE_HOME/OPatch/opatch lspatches

cd 36233263
$ORACLE_HOME/OPatch/opatch apply
cd ../36199232

$ORACLE_HOME/OPatch/opatch lspatches

Upgrade 11.2.0.4 to 19c

We use the autoupgrade utility to upgrade to 19c.

Make some directories to hold the upgrade files:

mkdir -p ~/upgrade ~/upgrade/global ~/upgrade/log
cd ~/upgrade

Create a sample config file and update it with these values.

export NEW_ORACLE_HOME=/u01/app/oracle/product/19
$NEW_ORACLE_HOME/jdk/bin/java -jar $NEW_ORACLE_HOME/rdbms/admin/autoupgrade.jar -create_sample_file config noncdbtopdb

mv sample_config.cfg config.cfg

I suggest using the following parameters:

global.autoupg_log_dir=/home/oracle/upgrade/global
upg1.log_dir=/home/oracle/upgrade/log
upg1.sid=bob
upg1.source_home=/u01/app/oracle/product/11
upg1.target_home=/u01/app/oracle/product/19
upg1.run_utlrp=yes
upg1.timezone_upg=yes

Run the autoupgrade using analyze mode to see if any manual changes are needed.

$NEW_ORACLE_HOME/jdk/bin/java -jar $NEW_ORACLE_HOME/rdbms/admin/autoupgrade.jar -config config.cfg -mode ANALYZE

# Check log to confirm if it passed checks.
cat /home/oracle/upgrade/global/cfgtoollogs/upgrade/auto/status/status.log

# Deploy to upgrade.
$NEW_ORACLE_HOME/jdk/bin/java -jar $NEW_ORACLE_HOME/rdbms/admin/autoupgrade.jar -config config.cfg -mode DEPLOY

# Monitor
lsj
tasks
status -a 7

Install Oracle AI Database 26ai

Now we install 26ai. This is currently the Free version available here. Or we can use wget again as root.

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/otn_software/db-free/oracle-database-free-23ai-1.0-1.el8.x86_64.rpm

Run the pre-install and the rpm install as root.

dnf install -y oracle-ai-database-preinstall-26ai
dnf -y localinstall oracle-ai-database-free-26ai-23.26.0-1.el8.x86_64.rpm

To keep things simple, we setup the 26ai Free database using default parameters. This will automatically create a CDB we can use for the 19c->26ai upgrade.

export DB_PASSWORD=DBA_Password8
(echo "${DB_PASSWORD}"; echo "${DB_PASSWORD}";) | /etc/init.d/oracle-free-26ai configure

Upgrade 19c to 26ai pdb

Drop a restore point created in the prior upgrade. Set compatibility to 19c and restart the instance.

drop restore point AUTOUPGRADE_9212_BOB112040;
alter system set compatible='19.0.0' scope=spfile;

shutdown immediate
startup

Re-run the prior steps for autoupgrade, this time using non cdb to pdb option.

export NEW_ORACLE_HOME=/opt/oracle/product/26ai/dbhomeFree

cd ~/upgrade
rm -rf global log

$NEW_ORACLE_HOME/jdk/bin/java -jar $NEW_ORACLE_HOME/rdbms/admin/autoupgrade.jar -create_sample_file config noncdbtopdb
global.autoupg_log_dir=/home/oracle/upgrade/global
upg1.log_dir=/home/oracle/upgrade/log
upg1.sid=bob
upg1.source_home=/u01/app/oracle/product/19
upg1.target_home=/opt/oracle/product/26ai/dbhomeFree
upg1.run_utlrp=yes
upg1.timezone_upg=yes
upg1.target_pdb_name=bob
upg1.target_cdb=FREE

Use the same analyze and deploy steps as before.

$NEW_ORACLE_HOME/jdk/bin/java -jar $NEW_ORACLE_HOME/rdbms/admin/autoupgrade.jar -config config.cfg -mode ANALYZE
$NEW_ORACLE_HOME/jdk/bin/java -jar $NEW_ORACLE_HOME/rdbms/admin/autoupgrade.jar -config config.cfg -mode DEPLOY

Note: You can not quite get to open mode with the current release of the free version of the on-premise Oracle AI Database 26ai. You will see this error during the final open process:

Upgrading to 26ai and setting up a new OEL 8.9 server is a strategic move that can significantly enhance your system’s performance, security, and functionality. By following the outlined steps and taking advantage of the new features, you can ensure a smooth transition and position your organization to leverage the full potential of this powerful software.

Explore more Oracle insights at Datavail.com.

Subscribe to Our Blog

Never miss a post! Stay up to date with the latest database, application and analytics tips and news. Delivered in a handy bi-weekly update straight to your inbox. You can unsubscribe at any time.