Monday, 19 January 2026
OCI - Interview Questions and Answers - 2
OCI - Interview Questions and Answers - 1
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
ora01db2. 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=13. 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.rpmThis 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=false6. 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 NOYour 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
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
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
OCI - Interview Questions and Answers - 2
OCI Foundations – Mock Test 2 (40 Questions)--- Section 1: Getting Started with OCI (6 Questions) Q1. What happens when you create a new O...
-
How to check Clock synchronization between cluster nodes in RAC RHEL - 7 : Applicable We can use below to check the clock/time synchroniz...
-
PDB Lockdown Profiles: - Oracle 12c new feature The PDB lockdown profile is a set of named sets that control operations. Controlling the P...
-
GPnP ( Grid Plug and Play ) profile in Oracle RAC The GPnP profile is a XML file located at location <GRID_HOME/gpnp/<hostname>/p...