Disclaimer

Friday, 9 January 2026

Installing Oracle AI Database 26ai Free on Oracle Linux 9

 


Oracle introduced Oracle AI Database ora26ai 26ai just a few hours ago, the next generation of its AI-enabled database platform.

In this guide, we’ll walk through the installation of this version on Oracle Linux 9.


System Resource Limits

Oracle AI Database ora26ai 26ai allows you to use up to:


2 CPU cores

2 GB of RAM

12 GB of user data storage

This edition is designed for developers, learners, and small-scale testing environments.


1. Configure Hostname and Hosts File

Set the hostname and update the /etc/hosts file:

Set the hostname and update the /etc/hosts file:

[root@ora01db ~]# vi /etc/hosts
192.168.1.31 ora01db

[root@ora01db ~]# vi /etc/hostname
ora01db


2. Prepare the Operating System Repository

Before installing Oracle packages, prepare the OS for preinstallation RPM by mounting the Oracle Linux ISO and creating a local repository:

mounting the Oracle Linux ISO and creating a local repository:

[root@ora01db ~]# mkdir /dvd
[root@ora01db ~]# mount /dev/sr0 /dvd
mount: /dvd: WARNING: source write-protected, mounted read-only.

[root@ora01db ~]# rm -rf /etc/yum.repos.d/*
Create the repository file /etc/yum.repos.d/OL9.repo:

Create the repository file /etc/yum.repos.d/OL9.repo:

[root@ora01db ~]# vi /etc/yum.repos.d/OL9.repo
[InstallMedia-BaseOS]
name=Oracle Linux 9 - BaseOS
baseurl=file:///dvd/BaseOS/
metadata_expire=-1
gpgcheck=0
enabled=1

[InstallMedia-AppStream]
name=Oracle Linux 9 - AppStream
baseurl=file:///dvd/AppStream/
metadata_expire=-1
gpgcheck=0
enabled=1


3. Install the Preinstallation RPM

Download the preinstall package from the Oracle Linux repository:

oracle-ai-database-preinstall-26ai-1.0–1.el9.x86_64.rpm

Then, install it using dnf:

dnf install -y /software/oracle-ai-database-preinstall-26ai-1.0-1.el9.x86_64.rpm

This package automatically configures the required OS settings, users, and kernel parameters for the Oracle Database installation.

4. Install Oracle AI Database Free 26ai

Download the database package:

oracle-ai-database-free-26ai-23.26.0–1.el9.x86_64.rpm

Then install it:

[root@ora01db ~]#dnf -y localinstall /software/oracle-ai-database-ora26ai-26ai-23.26.0-1.el9.x86_64.rpm

Last metadata expiration check: 0:07:06 ago on Tue 14 Oct 2025 07:10:07 PM +0330.
Dependencies resolved.
====================================================================================================================================
 Package                                      Architecture           Version                     Repository                    Size
====================================================================================================================================
Installing:
 oracle-ai-database-ora26ai-26ai                 x86_64                 23.26.0-1                   @commandline                 1.3 G

Transaction Summary
====================================================================================================================================
Install  1 Package

Total size: 1.3 G
Installed size: 3.6 G
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                            1/1
  Running scriptlet: oracle-ai-database-ora26ai-26ai-23.26.0-1.x86_64                                                              1/1
  Installing       : oracle-ai-database-ora26ai-26ai-23.26.0-1.x86_64                                                              1/1
  Running scriptlet: oracle-ai-database-ora26ai-26ai-23.26.0-1.x86_64                                                              1/1
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure Oracle AI Database ora26ai, optionally modify the parameters in '/etc/sysconfig/oracle-ora26ai-26ai.conf' and then run '/etc/init.d/oracle-ora26ai-26ai configure' as root.

  Verifying        : oracle-ai-database-ora26ai-26ai-23.26.0-1.x86_64                                                              1/1

Installed:
  oracle-ai-database-ora26ai-26ai-23.26.0-1.x86_64
Completed!

After installation, you’ll see a message confirming that Oracle Home has been set up successfully:

[INFO] Oracle home installed successfully and ready to be configured.
To configure Oracle AI Database Free, optionally modify the parameters in '/etc/sysconfig/oracle-free-26ai.conf' and then run '/etc/init.d/oracle-free-26ai configure' as root.

5. Configure the Database

Before running the configuration script, review or modify the following parameters in /etc/sysconfig/oracle-free-26ai.conf:

[root@ora01db ~]# cat /etc/sysconfig/oracle-ora26ai-26ai.conf
#This is a configuration file to setup the Oracle AI Database.
#It is used when running '/etc/init.d/oracle-ora26ai-26ai configure'.

# LISTENER PORT used Database listener, Leave empty for automatic port assignment
LISTENER_PORT=

# Character set of the database
CHARSET=AL32UTF8

# Database file directory
# If not specified, database files are stored under Oracle base/oradata
DBFILE_DEST=

# DB Domain name
DB_DOMAIN=

# Configure TDE
CONFIGURE_TDE=false

# Encrypt Tablespaces list, Leave empty for user tablespace alone or provide ALL for encrypting all tablespaces
# For specific tablespaces use SYSTEM:true,SYSAUX:false
ENCRYPT_TABLESPACES=

# SKIP Validations, memory, space
SKIP_VALIDATIONS=false


6. Run the Configuration Script

Now run the configuration utility to create the database:

[root@ora01db ~]# /etc/init.d/oracle-ora26ai-26ai configure
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:
Confirm the password:
Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle AI Database ora26ai.
Enter SYS user password:
**
Enter SYSTEM user password:
**
Enter PDBADMIN User Password:
**
Prepare for db operation
7% complete
Copying database files
29% complete
Creating and starting Oracle instance
30% complete
33% complete
36% complete
39% complete
43% complete
Completing Database Creation
47% complete
49% complete
50% complete
Creating Pluggable Databases
54% complete
71% complete
Executing Post Configuration Actions
93% complete
Running Custom Scripts
100% complete
Database creation complete. For details check the logfiles at:
 /opt/oracle/cfgtoollogs/dbca/ora26ai.
Database Information:
Global Database Name:ora26ai
System Identifier(SID):ora26ai
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ora26ai/ora26ai.log" for further details.

Connect to Oracle AI Database using one of the connect strings:
     Pluggable database: ora01db/ora26aiPDB1
     Multitenant container database: ora01db


7. Set Environment Variables

Edit the Oracle user’s .bash_profile to define environment variables:

Edit the Oracle user’s .bash_profile to define environment variables:

[oracle@ora01db ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
# User specific environment and startup programs

export ORACLE_SID=ora26ai
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/26ai/dbhomeora26ai
export PATH=$PATH:$HOME/.local/bin:$ORACLE_HOME/bin

8. Connect to the Database

Finally, connect as SYSDBA:

[oracle@ora01db ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 23.26.0.0.0 - Production on Tue Oct 14 19:35:17 2025
Version 23.26.0.0.0

Copyright (c) 1982, 2025, Oracle.  All rights reserved.


Connected to:
Oracle AI Database 26ai ora26ai Release 23.26.0.0.0 - Develop, Learn, and Run for ora26ai
Version 23.26.0.0.0

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY   NO
         3 ora26aiPDB1                    READ WRITE  NO

Your Oracle AI Database Free 26ai instance is now ready for development and learning purposes.


SMON recovery when a large transaction is killed

 


When a large transaction got killed, terminated we all know that smon will do the rollback of the transaction, “smon: enable tx recovery”  which can evident in alert log.

Some time due to fast_start_parallel_rollback =high , lot of parallel sessions invoked and may complete hung your database or not permit any other session to work.


When a large transaction is killed, SMON recovers it.


A large number of wait for an undo record events and   PX Deq: Txn Recovery Start events occur simultaneously.


I recently faced an issue, when I killed the session and session was updating the for 3 hours.


1) The session I was deleting was taking too long, so I killed it as follows.


 alter system kill session 'sid,seiral#' immediate; 


2) Even though I marked it as KILLED with the above command, the rollback took a long time, so I caught the spid and executed kill -9 as shown below.


select 'kill -9 ' || spid 
from  v$process 
where addr in (select paddr from v$session where status='KILLED' and type != 'BACKGROUND') 


When you kill a process like this, SMON uses multiple server processes to roll back the transaction .

This is called Fast Start Parallel Rollback .


After performing  kill -9  at the OS level  as shown below , a significant amount of wait for a undo record events are generated.  


PX Deq: You can see that Txn Recovery Start has been detected.

===========================================================================================
Session Information
===========================================================================================

SID-SERIAL      HashValue Spid Machine-Program COMMAND LOGON_TIME Call(s)        EVENT
-------------- ------------ ---------- -------------------------- ------ ---------- ---------- -------------------------
[9874,46615] 0 7472078 db01-oracle@db01 (P000) n/a 0620.20:26 000.000 db file sequential read
[265,61609] 0 61670314 db01-oracle@db01 (P059) n/a 0620.20:26 000.000 wait for an undo record
[5681,17633] 0 35717294 db01-oracle@db01 (P035) n/a 0620.20:26 000.000 row cache lock
[5480,33199] 0 26707536 db01-oracle@db01 (P007) n/a 0620.20:26 000.000 wait for an undo record
[5238,20611] 0 20578538 db01-oracle@db01 (P036) n/a 0620.20:26 000.000 wait for an undo record
[5061,59825] 0 25493528 db01-oracle@db01 (P034) n/a 0620.20:26 000.000 wait for an undo record
[5044,17947] 0 57540908 db01-oracle@db01 (P057) n/a 0620.20:26 000.000 wait for an undo record
[4872,23015] 0 34210080 db01-oracle@db01 (P033) n/a 0620.20:26 000.000 wait for an undo record
[4856,26783] 0 55266940 db01-oracle@db01 (P026) n/a 0620.20:26 000.000 wait for an undo record
[4853,30281] 0 51118748 db01-oracle@db01 (P005) n/a 0620.20:26 000.000 wait for an undo record
[4671,45407] 0 10551614 db01-oracle@db01 (P032) n/a 0620.20:26 000.000 wait for an undo record
[4071,2219] 0 8257782 db01-oracle@db01 (P023) n/a 0620.20:26 000.000 wait for an undo record
[449,48911] 0 30605964 db01-oracle@db01 (P009) n/a 0620.20:26 000.000 wait for an undo record
[627,28573] 0 30802342 db01-oracle@db01 (P025) n/a 0620.20:26 000.000 wait for an undo record
[838,56489] 0 34407142 db01-oracle@db01 (P026) n/a 0620.20:26 000.000 wait for an undo record
[1029,26291] 0 54526396 db01-oracle@db01 (P054) n/a 0620.20:26 000.000 wait for an undo record
[2620,7781] 0 56623890 db01-oracle@db01 (P022) n/a 0620.20:26 000.000 wait for an undo record
[2664,23379] 0 49807750 db01-oracle@db01 (P004) n/a 0620.20:26 000.000 wait for an undo record
[1623,35105] 0 34865774 db01-oracle@db01 (P001) n/a 0620.20:26 000.000 wait for an undo record
[2268,17005] 0 50069814 db01-oracle@db01 (P011) n/a 0620.20:26 000.000 wait for an undo record
[2636,48395] 0 53346564 db01-oracle@db01 (P027) n/a 0620.20:26 000.000 wait for an undo record
[3018,3649] 0 18677940 db01-oracle@db01 (P028) n/a 0620.20:26 000.000 wait for an undo record
[3256,43711] 0 8848138 db01-oracle@db01 (P055) n/a 0620.20:26 000.000 wait for an undo record
[3277,17711] 0 52822526 db01-oracle@db01 (P029) n/a 0620.20:26 000.000 wait for an undo record
[3432,50939] 0 52363774 db01-oracle@db01 (P008) n/a 0620.20:26 000.000 wait for an undo record
[3846,50973] 0 15205060 db01-oracle@db01 (P030) n/a 0620.20:26 000.000 wait for an undo record
[4052,16635] 0 29557328 db01-oracle@db01 (P031) n/a 0620.20:26 000.000 wait for an undo record
[227,41677] 0 37814498 db01-oracle@db01 (P026) n/a 0620.20:26 000.000 wait for an undo record



================================================================================
Session Information
================================================================================


SID-SERIAL     HashValue      Spid       Machine-Program          COMMAND LOGON_TIME Call(s) EVENT
-------------- ------------ ---------- -------------------------- ------- -----------        ---------------------------
[9867,18343] 0 7472078 db01-oracle@db01 (P000) n/a 0620.20:26 000.000 wait for an undo record
[5238,20743] 0 20578538 db01-oracle@db01 (P036) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[3256,43759] 791757000 52822526 db01-oracle@db01 (P029) select 0620.20:26 000.000 PX Deq: Txn Recovery Start
[8495,57391] 0 26518268 db01-oracle@db01 (P056) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[9080,60257] 0 17301526 db01-oracle@db01 (P018) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[9473,7991] 0 30474314 db01-oracle@db01 (P002) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[4853,30289] 0 55266940 db01-oracle@db01 (P026) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[9694,22351] 791757000 50200772 db01-oracle@db01 (P019) select 0620.20:26 000.000 PX Deq: Txn Recovery Start
[5484,56401] 791757000 26707536 db01-oracle@db01 (P007) select 0620.20:26 000.000 PX Deq: Txn Recovery Start
[3437,62165] 0 52363774 db01-oracle@db01 (P008) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[4671,45415] 0 10551614 db01-oracle@db01 (P032) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[5061,59833] 0 25493528 db01-oracle@db01 (P034) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[4872,23023] 0 34210080 db01-oracle@db01 (P033) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[4856,26797] 0 51118748 db01-oracle@db01 (P005) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[5681,17641] 791757000 35717294 db01-oracle@db01 (P035) select 0620.20:26 000.000 PX Deq: Txn Recovery Start
[5852,43825] 0 5439868 db01-oracle@db01 (P010) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[6268,34661] 0 15597644 db01-oracle@db01 (P037) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[6453,32903] 0 17433114 db01-oracle@db01 (P038) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[6700,63859] 0 40633182 db01-oracle@db01 (P039) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[6864,26577] 0 21168948 db01-oracle@db01 (P041) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[6896,55739] 0 14090420 db01-oracle@db01 (P006) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[7073,3583] 0 28182642 db01-oracle@db01 (P013) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[11908,26765] 0 56689098 db01-oracle@db01 (P003) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[7855,36717] 0 44368098 db01-oracle@db01 (P014) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[8044,42353] 0 54526138 db01-oracle@db01 (P015) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[8099,25759] 0 21758836 db01-oracle@db01 (P040) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[8261,14049] 0 33227092 db01-oracle@db01 (P016) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[8309,42657] 0 6357220 db01-oracle@db01 (P042) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[8482,3069] 0 3605038 db01-oracle@db01 (P043) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[8484,64059] 0 55050878 db01-oracle@db01 (P017) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[4071,2261] 0 29557328 db01-oracle@db01 (P031) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[8668,6415] 0 52694900 db01-oracle@db01 (P044) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[8888,42229] 0 61408046 db01-oracle@db01 (P045) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[9056,6235] 791757000 44892260 db01-oracle@db01 (P046) select 0620.20:26 000.000 PX Deq: Txn Recovery Start
[4052,16643] 0 8257782 db01-oracle@db01 (P023) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[9276,18081] 0 7603116 db01-oracle@db01 (P047) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[3846,50985] 0 15205060 db01-oracle@db01 (P030) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[3277,17725] 0 8848138 db01-oracle@db01 (P055) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[3030,32601] 0 18677940 db01-oracle@db01 (P028) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[9874,46623] 0 26870730 db01-oracle@db01 (P048) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[10057,62267] 791757000 51970352 db01-oracle@db01 (P049) select 0620.20:26 000.000 PX Deq: Txn Recovery Start
[10459,64567] 791757000 39387460 db01-oracle@db01 (P050) select 0620.20:26 000.000 PX Deq: Txn Recovery Start
[10667,31975] 0 51183616 db01-oracle@db01 (P058) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[10710,37301] 791757000 15466958 db01-oracle@db01 (P051) select 0620.20:26 000.000 PX Deq: Txn Recovery Start
[10880,7319] 791757000 53018904 db01-oracle@db01 (P020) select 0620.20:26 000.000 PX Deq: Txn Recovery Start
[11075,40977] 0 40370534 db01-oracle@db01 (P021) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[11683,43791] 0 50266508 db01-oracle@db01 (P052) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[11903,921] 0 1376566 db01-oracle@db01 (P053) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[5044,17955] 0 57540908 db01-oracle@db01 (P057) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start
[2636,48541] 0 53346564 db01-oracle@db01 (P027) n/a 0620.20:26 000.000 PX Deq: Txn Recovery Start



Initialization parameters 

The degree of parallelism during recovery is determined based on the value of FAST_START_PARALLEL_ROLLBACK .


If it is FALSE, Parallel Rollback is not performed.


If LOW (default), rollbacks are performed in parallel up to CPU_COUNT * 2.


If HIGH, rollbacks are performed in parallel up to CPU_COUNT * 4.


Parallel rollback isn't always a good thing.


For services with a lot of changes, this may result in a failure with the following error message due to a lack of undo segments.


ORA-30036: unable to extend segment by 8 in undo tablespace "UNDO TABLESPACE NAME"


You can check the status with V$FAST_START_SERVERS during parallel rollback processing



select state, count(*) from V$FAST_START_SERVERS group by state;


STATE        COUNT(*)

----------- ----------

RECOVERING    60


/

STATE        COUNT(*)

----------- ----------

IDLE          59

RECOVERING 1



And, you can predict when it will end using the V$FAST_START_TRANSACTIONS view 


ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS';


SELECT usn, state, undoblockstotal "Total", undoblocksdone "Done", undoblockstotal-undoblocksdone "ToDo",
DECODE(cputime,0,'unknown',SYSDATE+(((undoblockstotal-undoblocksdone) / (undoblocksdone / cputime)) / 86400)) "Finish at"  
FROM v$fast_start_transactions ; 



USN        STATE           Total     Done      ToDo       Finish at
---------- ------------- ---------- -------- ---------- -------------------
1109       RECOVERING      2269489   31317    2238172     2026/01/02 00:06:03



We can also predict as follows:

select ktuxeusn, to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') "Time", ktuxesiz, ktuxesta
from x$ktuxe where ktuxecfl = 'DEAD'; 


KTUXEUSN    Time                  KTUXESIZ    KTUXESTA
---------- -------------------   ---------- --------------
1109       2026/01/02 23:07:22   1800231    ACTIVE

When completed, it will be displayed like this.

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS'; SELECT usn, state, undoblockstotal "Total", undoblocksdone "Done", undoblockstotal-undoblocksdone "ToDo", DECODE(cputime,0,'unknown',SYSDATE+(((undoblockstotal-undoblocksdone) / (undoblocksdone / cputime)) / 86400)) "Finish at" FROM v$fast_start_transactions ; USN STATE Total Done ToDo Finish at ----------------- -------- -------- ------ ------------------- 1109 RECOVERED 32874 32874 0 2026/01/02 00:24:21


Installing Oracle AI Database 26ai Free on Oracle Linux 9

  Oracle introduced Oracle AI Database ora26ai 26ai just a few hours ago, the next generation of its AI-enabled database platform. In this g...