Wednesday, May 13, 2026

Oracle EBS R12.2 Database Upgrade to Oracle AI Database 26ai — Apps DBA Runbook

 

Oracle EBS R12.2 Database Upgrade to Oracle AI Database 26ai — Apps DBA Runbook

1. Introduction

As an Oracle Apps DBA, database upgrade activity in Oracle E-Business Suite is a critical production operation. This runbook explains the step-by-step approach to upgrade an Oracle EBS R12.2 single-node database to Oracle AI Database 26ai.

This runbook is written in a practical Apps DBA style so that it can be used during planning, execution, validation, and post-upgrade support.


2. Scope of This Runbook

This runbook is applicable for:

ItemDetails
ApplicationOracle E-Business Suite R12.2
Database Upgrade TargetOracle AI Database 26ai
ArchitectureSingle Node
EnvironmentOn-premises or OCI Compute
RoleOracle Apps DBA / EBS DBA
Activity TypeDatabase upgrade with EBS interoperability steps

3. High-Level Upgrade Flow

The complete upgrade activity can be divided into the following phases:

PhaseActivity
Phase 1Certification and prerequisite validation
Phase 2Install new 26ai Oracle Home
Phase 3Apply required database patches
Phase 4Prepare EBS appsutil and TNS configuration
Phase 5Execute pre-upgrade checks
Phase 6Upgrade database using AutoUpgrade
Phase 7Perform post-upgrade EBS tasks
Phase 8Run AutoConfig, ETCC, EDBPC, and validations
Phase 9Start application services and release system to users

4. Pre-Upgrade Planning Checklist

Before touching production, prepare the below checklist.

4.1 Confirm Certification

First confirm that your EBS release, database version, operating system, and platform are certified for Oracle AI Database 26ai.

Check:

ValidationStatus
EBS R12.2 certified with Oracle AI Database 26aiPending / Completed
OS certifiedPending / Completed
Required database patches identifiedPending / Completed
EBS interoperability notes reviewedPending / Completed
Backup strategy confirmedPending / Completed
Downtime window approvedPending / Completed
Rollback plan documentedPending / Completed

4.2 Take Mandatory Backups

Before starting the upgrade, take valid backups.

Recommended backups:

# Database backup using RMAN
rman target /

RMAN> backup database plus archivelog;
RMAN> backup current controlfile;
RMAN> backup spfile;

Also back up:

$ORACLE_HOME
$CONTEXT_FILE
tnsnames.ora
listener.ora
sqlnet.ora
init.ora/spfile
Application context files
EBS DBC files

5. Install Oracle AI Database 26ai Software

5.1 Create a New Oracle Home

The 26ai Oracle Home must be installed in a different directory from the existing 19c Oracle Home.

Example:

Old 19c Home : /u01/install/APPS/19.0.0
New 26ai Home: /u01/install/APPS/23.0.0

Do not overwrite the old Oracle Home.


5.2 Install Software Only

Run the Oracle Database 26ai installer.

Select:

Set Up Software Only
Enterprise Edition

Do not create a new database during installation.


5.3 Set Environment Variables

After installing 26ai software, verify the environment.

export ORACLE_BASE=/u01/install/APPS
export ORACLE_HOME=/u01/install/APPS/23.0.0
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/perl/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PERL5LIB=$ORACLE_HOME/perl/lib:$ORACLE_HOME/perl/lib/site_perl

Validate:

echo $ORACLE_HOME
echo $ORACLE_BASE
echo $PATH
echo $LD_LIBRARY_PATH
echo $PERL5LIB

6. Apply Required 26ai Database Patches

Before upgrade, apply all mandatory Oracle EBS certified database patches for 26ai.

Run OPatch validation:

$ORACLE_HOME/OPatch/opatch version
$ORACLE_HOME/OPatch/opatch lsinventory

Apply patches as per the certified patch list.

After patching, confirm:

$ORACLE_HOME/OPatch/opatch lsinventory | grep -i patch

7. Create 9idata Directory

Run the below command from the new 26ai Oracle Home:

perl $ORACLE_HOME/nls/data/old/cr9idata.pl

Then set:

export ORA_NLS10=$ORACLE_HOME/nls/data/9idata

Validate:

echo $ORA_NLS10
ls -ld $ORACLE_HOME/nls/data/9idata

8. Create appsutil.zip and Copy to DB Tier

From the application tier, create appsutil.zip and copy it to the database tier.

Typical approach:

cd $AD_TOP/bin
perl admkappsutil.pl

Copy the generated file to the database server and unzip under the new Oracle Home:

cd $ORACLE_HOME
unzip appsutil.zip

Validate:

ls -ld $ORACLE_HOME/appsutil
ls -l $ORACLE_HOME/appsutil/bin

9. Generate CDB TNS Files

On the database server, run:

cd $ORACLE_HOME/appsutil
. ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME

cd $ORACLE_HOME/appsutil/bin

perl txkGenCDBTnsAdmin.pl \
-dboraclehome=$ORACLE_HOME \
-cdbname=<CDB_SID> \
-cdbsid=<CDB_SID> \
-dbport=<DB_PORT> \
-outdir=$ORACLE_HOME/appsutil/log

Example:

perl txkGenCDBTnsAdmin.pl \
-dboraclehome=/u01/install/APPS/23.0.0 \
-cdbname=EBSCDB \
-cdbsid=EBSCDB \
-dbport=1521 \
-outdir=/u01/install/APPS/23.0.0/appsutil/log

Verify sqlnet.ora contains:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=12

Command:

grep SQLNET.ALLOWED_LOGON_VERSION_SERVER $ORACLE_HOME/network/admin/sqlnet.ora

10. Update UTL_FILE_DIR Directory Object Values

Before the upgrade, review and update UTL_FILE_DIR related directory object values.

Check current value:

show parameter utl_file_dir

or:

select name, value
from v$parameter
where name = 'utl_file_dir';

Also identify EBS temporary directories required for application processing.


11. Shutdown Application Tier

Before database upgrade, stop all EBS application services.

On application tier:

cd $ADMIN_SCRIPTS_HOME
./adstpall.sh apps/<apps_password>

Validate:

ps -ef | grep FNDLIBR
ps -ef | grep oacore
ps -ef | grep forms
ps -ef | grep apache

Expected result: no active EBS application services.


12. Shutdown Old Database Listener

On database tier, using old 19c Oracle Home:

lsnrctl status
lsnrctl stop <listener_name>

Also check LOCAL_LISTENER:

show parameter local_listener

If it points to an old or invalid listener during upgrade, review and correct it before proceeding.


13. Prepare AutoUpgrade Configuration File

Create an AutoUpgrade config file.

Example file:

vi /home/oracle/ebs26ai_upgrade.cfg

Sample content:

global.autoupg_log_dir=/u01/install/APPS/23.0.0/cfgtoollogs/autoupgrade/ebscdb

autoupgrade1.log_dir=/u01/install/APPS/23.0.0/cfgtoollogs/autoupgrade/ebscdb
autoupgrade1.sid=EBSCDB
autoupgrade1.source_home=/u01/install/APPS/19.0.0
autoupgrade1.target_home=/u01/install/APPS/23.0.0
autoupgrade1.start_time=NOW
autoupgrade1.upgrade_node=<hostname>
autoupgrade1.pdbs=EBSPDB
autoupgrade1.run_utlrp=yes
autoupgrade1.timezone_upg=yes
autoupgrade1.target_version=23
autoupgrade1.restoration=no

autoupgrade1.add_during_upgrade_pfile=/home/oracle/add_during_upgrade_pfile_ebscdb.ora
autoupgrade1.add_after_upgrade_pfile=/home/oracle/add_after_upgrade_pfile_ebscdb.ora
autoupgrade1.del_during_upgrade_pfile=/home/oracle/del_during_upgrade_pfile_ebscdb.ora
autoupgrade1.del_after_upgrade_pfile=/home/oracle/del_after_upgrade_pfile_ebscdb.ora

14. Prepare Parameter Add/Delete Files

Create add and delete parameter files as required.

Example add file:

vi /home/oracle/add_during_upgrade_pfile_ebscdb.ora

Example content:

event='10946 trace name context forever, level 8388608'
permit_92_wrap_format=true

Example delete file:

vi /home/oracle/del_during_upgrade_pfile_ebscdb.ora

Example content:

db_cache_size
sec_case_sensitive_logon
undo_retention
user_dump_dest
utl_file_dir

Important Apps DBA note:

Do not blindly copy parameters. Validate them against your environment and Oracle EBS recommended database initialization parameter document.


15. Run AutoUpgrade Analyze Mode

Set new Oracle Home:

export ORACLE_HOME=/u01/install/APPS/23.0.0
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:$PATH

Run analyze:

$ORACLE_HOME/jdk/bin/java -jar /home/oracle/autoupgrade.jar \
-config /home/oracle/ebs26ai_upgrade.cfg \
-mode analyze

Check logs:

cd /u01/install/APPS/23.0.0/cfgtoollogs/autoupgrade/ebscdb
ls -ltr

Review errors and warnings carefully.


16. Run AutoUpgrade Fixups

After analyze mode, run fixups:

$ORACLE_HOME/jdk/bin/java -jar /home/oracle/autoupgrade.jar \
-config /home/oracle/ebs26ai_upgrade.cfg \
-mode fixups

Validate fixup logs:

find /u01/install/APPS/23.0.0/cfgtoollogs/autoupgrade/ebscdb -name "*.log" -mtime -1

Do not proceed to deploy until critical issues are resolved.


17. Run AutoUpgrade Deploy Mode

Once analyze and fixups are clean, start upgrade:

$ORACLE_HOME/jdk/bin/java -jar /home/oracle/autoupgrade.jar \
-config /home/oracle/ebs26ai_upgrade.cfg \
-mode deploy

Monitor upgrade:

tail -f <autoupgrade_log_file>

Check database status:

select name, open_mode, database_role from v$database;

select con_id, name, open_mode
from v$pdbs;

18. Set Compatible Parameter After Testing

Oracle recommends changing compatible only after upgrade testing is completed.

Check current value:

show parameter compatible

Set only after approval:

alter system set compatible='<recommended_version>' scope=spfile;

Restart database:

shutdown immediate;
startup;

19. Start Listener from 26ai Oracle Home

Generate PDB TNS admin files:

cd $ORACLE_HOME/appsutil
. ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME

export ORACLE_SID=<CDB_SID>

cd $ORACLE_HOME/appsutil/bin

perl txkGenPDBTnsAdmin.pl \
-dboraclehome=$ORACLE_HOME \
-cdbname=<CDB_SID> \
-cdbsid=<CDB_SID> \
-pdbsid=<PDB_SID> \
-dbport=<DB_PORT> \
-outdir=$ORACLE_HOME/appsutil/log

Set PDB environment:

export ORACLE_PDB_SID=<PDB_SID>
export TNS_ADMIN=$ORACLE_HOME/network/admin/<PDB_SID>_<hostname>

Start listener:

lsnrctl start <CDB_SID>
lsnrctl status <CDB_SID>

20. Run adrevoke.sql and Grant EBS Privileges

Copy adrevoke.sql from application tier to database tier:

$AD_TOP/patch/115/sql/adrevoke.sql

Connect to PDB as SYSDBA:

sqlplus "/ as sysdba" @adrevoke.sql APPS

Then perform EBS database privilege grants as per Oracle EBS privilege management procedure.


21. Compile Invalid Objects

Run utlrp.sql using catcon.pl:

unset ORACLE_PDB_SID

cd $ORACLE_HOME/rdbms/admin

$ORACLE_HOME/perl/bin/perl catcon.pl --n 1 --e --b utlrp --d '''.''' utlrp.sql

Check invalid objects:

select owner, count(*)
from dba_objects
where status='INVALID'
group by owner
order by count(*) desc;

For APPS invalids:

select object_name, object_type, status
from dba_objects
where owner='APPS'
and status='INVALID'
order by object_type, object_name;

22. Gather SYS Schema Statistics

Copy adstats.sql from application tier:

$APPL_TOP/admin/adstats.sql

Run in restricted mode:

sqlplus "/ as sysdba"

alter system enable restricted session;

@adstats.sql

alter system disable restricted session;

exit;

Validate:

select owner, table_name, last_analyzed
from dba_tables
where owner='SYS'
and rownum <= 10;

23. Generate New Database Context File and Run AutoConfig

Run post PDB creation tasks:

cd $ORACLE_HOME/appsutil
. ./txkSetCfgCDB.env dboraclehome=$ORACLE_HOME

perl $ORACLE_HOME/appsutil/bin/txkPostPDBCreationTasks.pl \
-dboraclehome=$ORACLE_HOME \
-outdir=$ORACLE_HOME/appsutil/log \
-cdbsid=<CDB_SID> \
-pdbsid=<PDB_SID> \
-appsuser=apps \
-dbport=<DB_PORT> \
-servicetype=onpremise \
-dbuniquename=<DB_UNIQUE_NAME>

Check logs:

ls -ltr $ORACLE_HOME/appsutil/log

24. Update Application Tier Context File

On each application tier node, update these context variables:

Context VariableRequired Value
s_dbportNew database port
s_apps_jdbc_connect_descriptorNULL / blank
s_applptmpValid directory defined for EBS temporary file usage

Check allowed temporary directory:

select value
from v$parameter
where name='utl_file_dir';

25. Validate TWO_TASK Entry

Check $TNS_ADMIN/tnsnames.ora on both run and patch file systems.

Expected format:

<TWO_TASK> =
(DESCRIPTION =
(ADDRESS = (PROTOCOL=tcp)(HOST=<hostname.domain>)(PORT=<port>))
(CONNECT_DATA =
(SERVICE_NAME=ebs_<PDB_SID>)
(INSTANCE_NAME=<CDB_SID>)
)
)

Test connection:

tnsping <TWO_TASK>
sqlplus apps/<apps_password>@<TWO_TASK>

26. Run AutoConfig on Application Tier

Run AutoConfig on both run and patch file systems.

Source run file system:

. EBSapps.env run
cd $INST_TOP/admin/scripts
./adautocfg.sh

Source patch file system:

. EBSapps.env patch
cd $INST_TOP/admin/scripts
./adautocfg.sh

Apps DBA note:

Errors on patch file system AutoConfig may be ignorable in some cases, but always review the log before closing the task.


27. Run ETCC on Database Tier

Run ETCC to verify required database patches.

cd <ETCC_LOCATION>
./checkDBpatch.sh

Review output:

All required one-off bug fixes are present.

If missing patches are reported, apply them before releasing the environment.


28. Run EBS Database Parameter Checker

Download latest EDBPC utility patch and run the database parameter checker.

Purpose:

CheckReason
Missing parametersIdentify required EBS parameters
Incorrect valuesCorrect non-compliant settings
Deprecated parametersRemove unsupported values
Sizing parametersValidate recommended configuration

Review the generated report and correct all mandatory findings.


29. Regenerate JAR Files

Run adadmin from the run file system.

. EBSapps.env run
adadmin

Select:

Generate Applications Files
Generate product JAR files

Then select:

Compile/Reload Applications Database Entities
Reload JAR files to database

30. Implement Network ACLs

For Oracle AI Database 26ai, implement required Network ACLs for EBS database network access.

Typical validation:

select host, lower_port, upper_port, acl
from dba_network_acls;

select acl, principal, privilege, is_grant
from dba_network_acl_privileges;

Confirm required EBS schemas have appropriate network privileges.


31. Conditional Post-Upgrade Tasks

Depending on your environment, perform these additional tasks.

ComponentRequired Action
Database VaultDisable before upgrade, enable after upgrade if used
TLSReconfigure database tier TLS setup
ISGPerform ISG post-upgrade tasks
OID/OUDUpdate DIP provisioning profile
APEXUpgrade APEX if installed
External IntegrationsReconfigure with updated DBC file
ECCReconfigure JNDI / DBC connectivity if applicable
Encrypted DBReview wallet and sqlnet entries

32. Set INACTIVE_ACCOUNT_TIME to Unlimited

Connect to PDB as SYSDBA:

export ORACLE_PDB_SID=<PDB_SID>
sqlplus "/ as sysdba"

Run:

alter profile default limit INACTIVE_ACCOUNT_TIME unlimited;

Validate:

select profile, resource_name, limit
from dba_profiles
where resource_name='INACTIVE_ACCOUNT_TIME';

33. Start Application Services

Start EBS application tier services:

. EBSapps.env run

cd $ADMIN_SCRIPTS_HOME

./adstrtal.sh apps/<apps_password>

Validate services:

./adopmnctl.sh status

Check:

ps -ef | grep FNDLIBR
ps -ef | grep oacore
ps -ef | grep forms
ps -ef | grep apache

34. Post-Upgrade Validation Checklist

34.1 Database Validation

select name, open_mode from v$database;

select con_id, name, open_mode from v$pdbs;

select banner_full from v$version;

34.2 Invalid Object Validation

select owner, count(*)
from dba_objects
where status='INVALID'
group by owner
order by count(*) desc;

34.3 EBS Login Validation

Validate:

TestStatus
EBS login page opensPass / Fail
User login successfulPass / Fail
Forms launch successfulPass / Fail
OAF page opensPass / Fail
Concurrent manager startsPass / Fail
Sample concurrent request completesPass / Fail
Workflow mailer status checkedPass / Fail
Integration connectivity validatedPass / Fail

34.4 Concurrent Manager Validation

select concurrent_queue_name, running_processes, max_processes
from apps.fnd_concurrent_queues
where enabled_flag='Y';

Check active requests:

select request_id, phase_code, status_code, actual_start_date, actual_completion_date
from apps.fnd_concurrent_requests
where requested_start_date > sysdate - 1
order by request_id desc;

35. Common Issues and Troubleshooting

Issue 1: Application Login Fails After Upgrade

Check:

tnsping <TWO_TASK>
sqlplus apps/<password>@<TWO_TASK>

Validate:

echo $TNS_ADMIN
cat $TNS_ADMIN/tnsnames.ora

Possible causes:

CauseAction
Wrong TNS entryCorrect tnsnames.ora
AutoConfig not runRun AutoConfig
Listener not startedStart listener
Wrong service nameCorrect service name as ebs_<PDB_SID>

Issue 2: Invalid Objects Remain

Run:

select owner, object_type, count(*)
from dba_objects
where status='INVALID'
group by owner, object_type
order by count(*) desc;

Recompile:

exec utl_recomp.recomp_parallel(8);

Issue 3: Concurrent Managers Not Starting

Check internal manager:

select concurrent_queue_name, running_processes, max_processes
from apps.fnd_concurrent_queues
where concurrent_queue_name='FNDICM';

Check logs:

cd $APPLCSF/$APPLLOG
ls -ltr

Issue 4: Forms Not Opening

Check:

echo $FORMS_WEB_CONFIG_FILE
echo $CONTEXT_FILE

Bounce services if required:

adstpall.sh apps/<password>
adstrtal.sh apps/<password>

36. Final Production Handover Checklist

ItemStatus
Database upgraded successfullyCompleted
Listener running from 26ai Oracle HomeCompleted
PDB open read writeCompleted
AutoConfig completed on DB tierCompleted
AutoConfig completed on app tier run FSCompleted
AutoConfig completed on app tier patch FSCompleted
ETCC completedCompleted
EDBPC completedCompleted
Invalid objects reviewedCompleted
SYS stats gatheredCompleted
JAR files regeneratedCompleted
EBS login testedCompleted
Concurrent manager testedCompleted
Business smoke testing completedCompleted
Monitoring enabledCompleted
Backup after upgrade completedCompleted

37. Apps DBA Best Practices

  1. Never upgrade directly without certification validation.
  2. Always install 26ai in a new Oracle Home.
  3. Keep old Oracle Home untouched until upgrade is fully signed off.
  4. Take complete RMAN and configuration backups.
  5. Run AutoUpgrade analyze and fixups before deploy.
  6. Review every warning in AutoUpgrade logs.
  7. Run ETCC after upgrade.
  8. Run EDBPC to validate database parameters.
  9. Always test EBS login, Forms, OAF pages, concurrent managers, workflow, and integrations.
  10. Keep rollback plan ready until business sign-off is received.

38. Conclusion

Upgrading Oracle EBS R12.2 database to Oracle AI Database 26ai is not only a database upgrade activity. It is a complete EBS technology stack activity involving database home installation, EBS appsutil configuration, TNS generation, AutoUpgrade execution, AutoConfig, ETCC, EDBPC, invalid object compilation, JAR regeneration, and full application validation.

For an Apps DBA, the success of this activity depends on careful planning, clean execution, strong validation, and proper communication with business and application teams

No comments:

Post a Comment