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:
| Item | Details |
|---|---|
| Application | Oracle E-Business Suite R12.2 |
| Database Upgrade Target | Oracle AI Database 26ai |
| Architecture | Single Node |
| Environment | On-premises or OCI Compute |
| Role | Oracle Apps DBA / EBS DBA |
| Activity Type | Database upgrade with EBS interoperability steps |
3. High-Level Upgrade Flow
The complete upgrade activity can be divided into the following phases:
| Phase | Activity |
|---|---|
| Phase 1 | Certification and prerequisite validation |
| Phase 2 | Install new 26ai Oracle Home |
| Phase 3 | Apply required database patches |
| Phase 4 | Prepare EBS appsutil and TNS configuration |
| Phase 5 | Execute pre-upgrade checks |
| Phase 6 | Upgrade database using AutoUpgrade |
| Phase 7 | Perform post-upgrade EBS tasks |
| Phase 8 | Run AutoConfig, ETCC, EDBPC, and validations |
| Phase 9 | Start 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:
| Validation | Status |
|---|---|
| EBS R12.2 certified with Oracle AI Database 26ai | Pending / Completed |
| OS certified | Pending / Completed |
| Required database patches identified | Pending / Completed |
| EBS interoperability notes reviewed | Pending / Completed |
| Backup strategy confirmed | Pending / Completed |
| Downtime window approved | Pending / Completed |
| Rollback plan documented | Pending / 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 Variable | Required Value |
|---|---|
s_dbport | New database port |
s_apps_jdbc_connect_descriptor | NULL / blank |
s_applptmp | Valid 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:
| Check | Reason |
|---|---|
| Missing parameters | Identify required EBS parameters |
| Incorrect values | Correct non-compliant settings |
| Deprecated parameters | Remove unsupported values |
| Sizing parameters | Validate 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.
| Component | Required Action |
|---|---|
| Database Vault | Disable before upgrade, enable after upgrade if used |
| TLS | Reconfigure database tier TLS setup |
| ISG | Perform ISG post-upgrade tasks |
| OID/OUD | Update DIP provisioning profile |
| APEX | Upgrade APEX if installed |
| External Integrations | Reconfigure with updated DBC file |
| ECC | Reconfigure JNDI / DBC connectivity if applicable |
| Encrypted DB | Review 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:
| Test | Status |
|---|---|
| EBS login page opens | Pass / Fail |
| User login successful | Pass / Fail |
| Forms launch successful | Pass / Fail |
| OAF page opens | Pass / Fail |
| Concurrent manager starts | Pass / Fail |
| Sample concurrent request completes | Pass / Fail |
| Workflow mailer status checked | Pass / Fail |
| Integration connectivity validated | Pass / 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:
| Cause | Action |
|---|---|
| Wrong TNS entry | Correct tnsnames.ora |
| AutoConfig not run | Run AutoConfig |
| Listener not started | Start listener |
| Wrong service name | Correct 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
| Item | Status |
|---|---|
| Database upgraded successfully | Completed |
| Listener running from 26ai Oracle Home | Completed |
| PDB open read write | Completed |
| AutoConfig completed on DB tier | Completed |
| AutoConfig completed on app tier run FS | Completed |
| AutoConfig completed on app tier patch FS | Completed |
| ETCC completed | Completed |
| EDBPC completed | Completed |
| Invalid objects reviewed | Completed |
| SYS stats gathered | Completed |
| JAR files regenerated | Completed |
| EBS login tested | Completed |
| Concurrent manager tested | Completed |
| Business smoke testing completed | Completed |
| Monitoring enabled | Completed |
| Backup after upgrade completed | Completed |
37. Apps DBA Best Practices
- Never upgrade directly without certification validation.
- Always install 26ai in a new Oracle Home.
- Keep old Oracle Home untouched until upgrade is fully signed off.
- Take complete RMAN and configuration backups.
- Run AutoUpgrade analyze and fixups before deploy.
- Review every warning in AutoUpgrade logs.
- Run ETCC after upgrade.
- Run EDBPC to validate database parameters.
- Always test EBS login, Forms, OAF pages, concurrent managers, workflow, and integrations.
- 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