Wednesday, May 13, 2026

Oracle EBS 12.2 Database Upgrade from 19c to Oracle AI Database 26ai with Existing Physical Standby

 

Apps DBA Runbook for Primary and Data Guard Standby Upgrade

1. Purpose of This Runbook

This runbook explains the high-level and step-by-step approach for upgrading an Oracle E-Business Suite Release 12.2 database from Oracle Database 19c to Oracle AI Database 26ai when the environment has an existing Oracle Data Guard Physical Standby.

The objective is to help Oracle Apps DBAs understand the complete execution flow, including:

AreaPurpose
Primary database preparationPrepare 26ai Oracle Home and upgrade readiness
Standby database preparationClone 26ai Oracle Home and prepare redo apply
Data Guard handlingEnsure redo shipping and apply continue during upgrade
AutoUpgrade executionUpgrade the primary database using Oracle AutoUpgrade
AutoConfig implementationConfigure EBS database and application tiers after upgrade
Post-upgrade validationVerify EBS, database, Data Guard, invalid objects, and services

This runbook is based on Oracle’s upgrade approach for EBS 12.2 with Oracle Database 19c to Oracle AI Database 26ai using an existing physical standby. The Oracle document states that the physical standby is generally upgraded inline by applying redo generated during the primary database upgrade, and AutoConfig must be run on both primary and standby databases after the database is upgraded.


2. Important Disclaimer

This is a generic Apps DBA runbook. Do not directly execute these steps in production without:

  1. Reviewing the latest Oracle MOS documents.
  2. Validating all patches and certifications.
  3. Testing the complete procedure in a lower environment.
  4. Taking required backups.
  5. Getting approval from business, application, DBA, infrastructure, and disaster recovery teams.

Replace all values such as:

<CDB_NAME>
<PDB_NAME>
<DB_UNIQUE_NAME>
<19c_ORACLE_HOME>
<26ai_ORACLE_HOME>
<APPS_PASSWORD>
<SYS_PASSWORD>
<PRIMARY_HOST>
<STANDBY_HOST>
<DB_PORT>

with your actual environment values.


3. Environment Assumption

This runbook assumes the following architecture:

ComponentCurrent Version / Status
ApplicationOracle E-Business Suite 12.2
Source DatabaseOracle Database 19c
Target DatabaseOracle AI Database 26ai
ArchitectureCDB/PDB
DR SetupPhysical Standby using Oracle Data Guard
Upgrade MethodAutoUpgrade
EBS ConfigurationAutoConfig enabled
Apps ServicesWill be stopped before upgrade
Standby Upgrade MethodInline through redo apply

Oracle’s reference document specifically covers EBS 12.2 primary and standby databases running in Data Guard configuration from 19c to Oracle AI Database 26ai. It also notes that Oracle AI Database 26ai replaces Oracle Database 23ai.


4. High-Level Upgrade Flow

Upgrade Flow Summary

PhaseActivity
Phase 1Validate prerequisites
Phase 2Install 26ai Oracle Home on primary
Phase 3Clone 26ai Oracle Home to standby
Phase 4Prepare Data Guard for upgrade
Phase 5Stop EBS application services
Phase 6Start standby recovery from 26ai Oracle Home
Phase 7Run AutoUpgrade on primary
Phase 8Validate redo apply on standby
Phase 9Run post-upgrade database tasks
Phase 10Run AutoConfig on primary
Phase 11Run AutoConfig on standby, if applicable
Phase 12Start EBS services and validate

5. Pre-Upgrade Checklist

Before starting the upgrade, verify the following.

5.1 EBS and Database Prerequisites

CheckValidation
EBS versionEBS 12.2.7 or later
Source DBOracle Database 19c
Target DBOracle AI Database 26ai
AD/TXK levelLatest required AD/TXK patches applied
ETCCLatest ETCC run and required fixes applied
Unsupported productsConfirm no unsupported EBS products are in use
Standby healthPhysical standby tested and synchronized
BackupValid RMAN backup available
FlashbackEnabled where required
Downtime approvalApproved change window available

Oracle’s prerequisite section states that the standby system must use the same Oracle AI Database 26ai and Oracle E-Business Suite versions as deployed on the primary.


6. Pre-Upgrade Validation Queries

6.1 Check Database Version

select name, open_mode, database_role from v$database;

select banner_full
from v$version;

Expected output before upgrade:

NAMEOPEN_MODEDATABASE_ROLE
CDBPRODREAD WRITEPRIMARY

6.2 Check PDB Status

show pdbs;

Expected:

CON_IDNAMEOPEN MODE
2PDB$SEEDREAD ONLY
3<PDB_NAME>READ WRITE

6.3 Check Registry Components

select comp_name, version, status
from dba_registry
order by comp_name;

Expected:

COMP_NAMEVERSIONSTATUS
Oracle Database Catalog Views19.x.x.xVALID
Oracle Database Packages and Types19.x.x.xVALID

6.4 Check Data Guard Status

On Primary:

select database_role, open_mode, protection_mode, protection_level
from v$database;

On Standby:

select database_role, open_mode, recovery_mode
from v$archive_dest_status
where status='VALID';

Check archive apply gap:

select thread#, sequence#, applied
from v$archived_log
order by thread#, sequence#;

7. Phase 1: Install Oracle AI Database 26ai Oracle Home on Primary

Install Oracle AI Database 26ai software on the primary database server.

7.1 Set Environment

export ORACLE_HOME=<26ai_ORACLE_HOME>
export PATH=$ORACLE_HOME/bin:$PATH

7.2 Copy appsutil.zip from Application Tier

From the application tier, create and copy appsutil.zip to the new database Oracle Home.

On database tier:

cd <26ai_ORACLE_HOME>
unzip appsutil.zip

Oracle’s procedure includes creating appsutil.zip on the application tier, copying it to the database tier, and unzipping it under the 26ai Oracle Home.


8. Phase 2: Generate CDB Network Files on Primary

Run the CDB TNS generation utility.

cd <26ai_ORACLE_HOME>/appsutil

. txkSetCfgCDB.env dboraclehome=<26ai_ORACLE_HOME>

perl $ORACLE_HOME/appsutil/bin/txkGenCDBTnsAdmin.pl \
-dboraclehome=<26ai_ORACLE_HOME> \
-cdbname=<CDB_NAME> \
-cdbsid=<CDB_SID> \
-dbport=<DB_PORT> \
-outdir=<26ai_ORACLE_HOME>/appsutil/log \
-israc=<Yes_or_No> \
-virtualhostname=<VIP_HOSTNAME> \
-mode=generate

For RAC, run this on all RAC nodes.

Validate:

cat $ORACLE_HOME/network/admin/sqlnet.ora

Expected entry:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=12

9. Phase 3: Generate PDB Network Files on Primary

cd <26ai_ORACLE_HOME>/appsutil

. ./txkSetCfgCDB.env dboraclehome=<26ai_ORACLE_HOME>

export ORACLE_SID=<CDB_SID>

perl $ORACLE_HOME/appsutil/bin/txkGenPDBTnsAdmin.pl \
-dboraclehome=<26ai_ORACLE_HOME> \
-outdir=<26ai_ORACLE_HOME>/appsutil/log \
-cdbname=<CDB_NAME> \
-cdbsid=<CDB_SID> \
-pdbsid=<PDB_NAME> \
-dbport=<DB_PORT> \
-israc=<Yes_or_No> \
-virtualhostname=<VIP_HOSTNAME>

Copy CDB sqlnet content into the PDB network admin file if required:

cat $ORACLE_HOME/network/admin/sqlnet.ora >> \
$ORACLE_HOME/network/admin/<CONTEXT_NAME>/sqlnet_ifile.ora

sed -i "/IFILE/d" \
$ORACLE_HOME/network/admin/<CONTEXT_NAME>/sqlnet_ifile.ora

10. Phase 4: Clone 26ai Oracle Home to Standby

On the primary database server:

cd <26ai_ORACLE_HOME>

./runInstaller -createGoldImage -destinationLocation /u01/app/oracle

Copy the generated zip file to the standby database server.

On standby:

mkdir -p <26ai_ORACLE_HOME>
cd <26ai_ORACLE_HOME>

unzip /u01/app/oracle/db_home_<date_timestamp>.zip

Register the Oracle Home:

cd <26ai_ORACLE_HOME>
./runInstaller

Select:

Set Up Software Only

Oracle’s standby preparation section describes creating a gold image from the primary Oracle Home, copying it to the standby server, unzipping it into the 26ai Oracle Home, and registering it using the installer.


11. Phase 5: Generate CDB Network Files on Standby

On standby:

cd <26ai_ORACLE_HOME>/appsutil

. txkSetCfgCDB.env dboraclehome=<26ai_ORACLE_HOME>

perl $ORACLE_HOME/appsutil/bin/txkGenCDBTnsAdmin.pl \
-dboraclehome=<26ai_ORACLE_HOME> \
-cdbname=<CDB_NAME> \
-cdbsid=<CDB_SID> \
-dbport=<DB_PORT> \
-outdir=<26ai_ORACLE_HOME>/appsutil/log \
-israc=<Yes_or_No> \
-virtualhostname=<VIP_HOSTNAME> \
-mode=generate

Validate:

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

Expected:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=12

12. Phase 6: Copy Required Files from 19c Home to 26ai Home

Perform this on both primary and standby.

12.1 Copy init or spfile

If using pfile:

cp -p <19c_ORACLE_HOME>/dbs/init<SID>.ora \
<26ai_ORACLE_HOME>/dbs/

cp -p <19c_ORACLE_HOME>/dbs/<SID>_<hostname>_ifile.ora \
<26ai_ORACLE_HOME>/dbs/

If using spfile:

cp -p <19c_ORACLE_HOME>/dbs/spfile<SID>.ora \
<26ai_ORACLE_HOME>/dbs/

12.2 Copy Network Include Files

cp -p <19c_ORACLE_HOME>/network/admin/listener_ifile.ora \
<26ai_ORACLE_HOME>/network/admin/

cp -p <19c_ORACLE_HOME>/network/admin/<SID>_<hostname>_ifile.ora \
<26ai_ORACLE_HOME>/network/admin/

Update old 19c paths to 26ai paths inside:

listener.ora
tnsnames.ora
listener_ifile.ora
<SID>_<hostname>_ifile.ora

13. Phase 7: Create Password File for Single Node Database

For non-RAC environments:

cd <26ai_ORACLE_HOME>/dbs

orapwd file=orapw<SID> password=<SYS_PASSWORD> entries=<MAX_PRIV_USERS>

For RAC, ensure password file is properly stored in ASM and registered with Clusterware.


14. Phase 8: EBS Pre-Upgrade Tasks

14.1 Remove Old Database Editions

Check number of editions:

sqlplus apps/<APPS_PASSWORD> @$AD_TOP/sql/ADZDSHOWED.sql

If more than 10 editions exist, complete the cleanup cycle.

adop phase=prepare
adop phase=actualize_all
adop phase=cutover

Then on the new run file system:

adop phase=cleanup cleanup_mode=full

sqlplus apps/<APPS_PASSWORD> @$AD_TOP/sql/ADZDRUNCLEANUNUSE.sql

Oracle’s upgrade pre-steps include checking the number of EBS database editions and running adop cleanup when required before the database upgrade.


15. Phase 9: Stop EBS Application Services

On the application tier:

source EBSapps.env run

cd $ADMIN_SCRIPTS_HOME

./adstpall.sh -mode=allnodes

Validate no services are running:

ps -ef | grep -i FND
ps -ef | grep -i oacore
ps -ef | grep -i forms

16. Phase 10: Stop Redo Apply on Standby

On standby:

sqlplus "/ as sysdba"

alter database recover managed standby database cancel;

Check status:

select process, status, thread#, sequence#
from v$managed_standby;

17. Phase 11: Stop 19c Database and Listener

On primary and standby:

export ORACLE_HOME=<19c_ORACLE_HOME>
export PATH=$ORACLE_HOME/bin:$PATH

lsnrctl stop

Stop database.

For single instance:

shutdown immediate;

For RAC:

srvctl stop database -d <DB_UNIQUE_NAME>

18. Phase 12: Start Listener from 26ai Oracle Home

On primary and standby:

export ORACLE_HOME=<26ai_ORACLE_HOME>
export PATH=$ORACLE_HOME/bin:$PATH

lsnrctl start
lsnrctl status

19. Phase 13: Start Standby from 26ai Oracle Home

On standby:

export ORACLE_HOME=<26ai_ORACLE_HOME>
export ORACLE_SID=<CDB_SID>
export PATH=$ORACLE_HOME/bin:$PATH

sqlplus "/ as sysdba"
startup mount;

alter database recover managed standby database disconnect from session;

Validate:

select process, status, thread#, sequence#
from v$managed_standby;

20. Phase 14: Start Primary from 19c Oracle Home

On primary:

export ORACLE_HOME=<19c_ORACLE_HOME>
export ORACLE_SID=<CDB_SID>
export PATH=$ORACLE_HOME/bin:$PATH

sqlplus "/ as sysdba"
startup;

For RAC, start only one instance during upgrade if required by your approved procedure.


21. Phase 15: Verify Primary to Standby Connectivity

From primary server:

sqlplus sys/<SYS_PASSWORD>@<STANDBY_TNS_ALIAS> as sysdba

If connection fails, check:

tnsping <STANDBY_TNS_ALIAS>
lsnrctl status
cat $ORACLE_HOME/network/admin/tnsnames.ora
cat $ORACLE_HOME/network/admin/listener.ora

22. Phase 16: Prepare AutoUpgrade Configuration File

Generate sample config:

$ORACLE_HOME/jdk/bin/java -jar <autoupgrade.jar> \
-create_sample_file config <config_file_location>

Sample configuration:

global.autoupg_log_dir=<ORACLE_BASE>/cfgtoollogs/autoupgrade

upg1.log_dir=<ORACLE_BASE>/cfgtoollogs/autoupgrade/<CDB_NAME>
upg1.sid=<CDB_NAME>
upg1.source_home=<19c_ORACLE_HOME>
upg1.target_home=<26ai_ORACLE_HOME>
upg1.start_time=NOW
upg1.upgrade_node=<PRIMARY_HOST>
upg1.pdbs=<PDB_NAME>
upg1.run_utlrp=yes
upg1.timezone_upg=yes
upg1.target_version=23
upg1.restoration=yes

upg1.defer_standby_log_shipping=no

upg1.del_before_upgrade_pfile=<AUTOUPGRADE_DIR>/<CDB_NAME>/del_before_upgrade_pfile_<CDB_NAME>.ora
upg1.add_after_upgrade_pfile=<AUTOUPGRADE_DIR>/<CDB_NAME>/add_after_upgrade_pfile_<CDB_NAME>.ora

Important point:

upg1.defer_standby_log_shipping=no

This allows redo shipping to the standby during the upgrade. Oracle notes that AutoUpgrade disables log shipping by default unless the configuration is modified, and the parameter should be set to no for redo shipping to the standby during upgrade.


23. Phase 17: Create Parameter Files for AutoUpgrade

23.1 Remove Desupported Parameters Before Upgrade

Example:

vi <AUTOUPGRADE_DIR>/<CDB_NAME>/del_before_upgrade_pfile_<CDB_NAME>.ora

Sample content:

event='10946 trace name context forever, level 8454144'

Add any desupported parameters based on the latest EBS database initialization parameter note.


23.2 Add Required Parameters After Upgrade

vi <AUTOUPGRADE_DIR>/<CDB_NAME>/add_after_upgrade_pfile_<CDB_NAME>.ora

Sample content:

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

24. Phase 18: Run AutoUpgrade Analyze

export ORACLE_HOME=<26ai_ORACLE_HOME>
export PATH=$ORACLE_HOME/bin:$PATH

$ORACLE_HOME/jdk/bin/java -jar <autoupgrade.jar> \
-config <config_file_location> \
-mode analyze

Review logs:

cd <ORACLE_BASE>/cfgtoollogs/autoupgrade

Check for:

StatusAction
PASSEDProceed
WARNINGReview and document
FAILEDFix before moving forward

25. Phase 19: Run AutoUpgrade Fixups

$ORACLE_HOME/jdk/bin/java -jar <autoupgrade.jar> \
-config <config_file_location> \
-mode fixups

Re-run analyze if required:

$ORACLE_HOME/jdk/bin/java -jar <autoupgrade.jar> \
-config <config_file_location> \
-mode analyze

26. Phase 20: Run AutoUpgrade Deploy

$ORACLE_HOME/jdk/bin/java -jar <autoupgrade.jar> \
-config <config_file_location> \
-mode deploy

Monitor:

tail -f <AUTOUPGRADE_LOG_FILE>

27. Phase 21: Monitor Redo Shipping During Upgrade

On primary:

select sequence#, applied
from v$archived_log
order by first_time;

On standby:

select process, status, thread#, sequence#
from v$managed_standby;

Check apply lag:

select name, value, unit
from v$dataguard_stats;

Expected:

NAMEVALUE
transport lagSmall or zero
apply lagSmall or zero

28. Phase 22: Validate Database Upgrade

On primary:

show pdbs;
select comp_name, version, status
from dba_registry
order by comp_name;

Switch to PDB:

alter session set container=<PDB_NAME>;

select comp_name, version, status
from dba_registry
order by comp_name;

Expected:

ComponentStatus
CDB registryVALID
PDB registryVALID
EBS database objectsTo be compiled if invalid

29. Phase 23: Run Datapatch

export ORACLE_HOME=<26ai_ORACLE_HOME>
export ORACLE_SID=<CDB_SID>
export PATH=$ORACLE_HOME/bin:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data/9idata

$ORACLE_HOME/OPatch/datapatch

Validate:

select patch_id, action, status, action_time
from dba_registry_sqlpatch
order by action_time;

30. Phase 24: Run adrevoke.sql

Copy from application tier:

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

Run on database tier:

export ORACLE_PDB_SID=<PDB_NAME>

sqlplus "/ as sysdba" @adrevoke.sql APPS

31. Phase 25: Compile Invalid Objects

export ORACLE_PDB_SID=<PDB_NAME>

sqlplus "/ as sysdba" @$ORACLE_HOME/rdbms/admin/utlrp.sql

Check invalid objects:

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

32. Phase 26: Set INACTIVE_ACCOUNT_TIME to Unlimited

export ORACLE_PDB_SID=<PDB_NAME>

sqlplus "/ as sysdba"
alter profile default limit INACTIVE_ACCOUNT_TIME unlimited;

Validate:

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

33. Phase 27: Grant Text Datastore Access

export ORACLE_PDB_SID=<PDB_NAME>

sqlplus "/ as sysdba"
grant text datastore access to public;

34. Phase 28: Gather SYS Statistics

Copy adstats.sql from application tier:

$APPL_TOP/admin/adstats.sql

Run from database tier:

export ORACLE_PDB_SID=<PDB_NAME>

sqlplus "/ as sysdba"
alter system enable restricted session;

@adstats.sql

alter system disable restricted session;

Unset PDB SID:

unset ORACLE_PDB_SID

35. Phase 29: Enable Data Guard Broker, If Used

If Data Guard Broker was disabled before upgrade, enable it again.

On primary and standby:

alter system set dg_broker_start=true;

From DGMGRL:

dgmgrl sys/<SYS_PASSWORD>@<PRIMARY_TNS_ALIAS>
ENABLE CONFIGURATION;
SHOW CONFIGURATION;
SHOW DATABASE VERBOSE '<PRIMARY_DB_UNIQUE_NAME>';
SHOW DATABASE VERBOSE '<STANDBY_DB_UNIQUE_NAME>';

36. Phase 30: Implement AutoConfig on Primary Database

For single-node:

cd <26ai_ORACLE_HOME>/appsutil

. ./txkSetCfgCDB.env dboraclehome=<26ai_ORACLE_HOME>

perl $ORACLE_HOME/appsutil/bin/txkPostPDBCreationTasks.pl \
-dboraclehome=<26ai_ORACLE_HOME> \
-outdir=<26ai_ORACLE_HOME>/appsutil/log \
-cdbsid=<CDB_SID> \
-pdbsid=<PDB_NAME> \
-appsuser=APPS \
-dbport=<DB_PORT> \
-israc=no \
-generatepasswordfile=no \
-servicetype=onpremise

For RAC, run the RAC-specific command with:

-israc=yes
-virtualhostname=<VIP_HOSTNAME>
-scanhostname=<SCAN_NAME>
-scanport=<SCAN_PORT>

Oracle’s AutoConfig section separates single-node and RAC execution, and for RAC it uses txkPostPDBCreationTasks.pl on the first database node and txkCfgPDBRACNode.pl on the remaining nodes.


37. Phase 31: Run ETCC on Database Nodes

source $ORACLE_HOME/<PDB_NAME>_<HOSTNAME>.env

./checkDBpatch.sh

Run on all DB nodes.


38. Phase 32: Run EBS Database Parameter Checker

Download latest EDBPC patch as per Oracle recommendation and run the parameter checker.

Purpose:

UtilityPurpose
ETCCConfirms required technology patches
EDBPCConfirms required EBS database parameters

39. Phase 33: Update UTL_FILE_DIR

Get current UTL_FILE_DIR:

cd <26ai_ORACLE_HOME>

. <PDB_NAME>_<hostname>.env

perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl \
-contextfile=$CONTEXT_FILE \
-oraclehome=$ORACLE_HOME \
-outdir=$ORACLE_HOME/appsutil/log \
-mode=getUtlFileDir \
-servicetype=onpremise

Edit:

<ORACLE_HOME>/dbs/<PDB_NAME>_utlfiledir.txt

Create required directories:

mkdir -p <26ai_ORACLE_HOME>/../temp/<PDB_NAME>
mkdir -p <26ai_ORACLE_HOME>/appsutil/outbound/<CONTEXT_NAME>

Set UTL_FILE_DIR:

perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl \
-contextfile=$CONTEXT_FILE \
-oraclehome=$ORACLE_HOME \
-outdir=$ORACLE_HOME/appsutil/log \
-mode=setUtlFileDir \
-servicetype=onpremise

Sync UTL_FILE_DIR:

perl $ORACLE_HOME/appsutil/bin/txkCfgUtlfileDir.pl \
-contextfile=$CONTEXT_FILE \
-oraclehome=$ORACLE_HOME \
-outdir=$ORACLE_HOME/appsutil/log \
-mode=syncUtlFileDir \
-servicetype=onpremise

Oracle specifically highlights the required event for UTL_FILE functionality in Oracle AI Database 26ai:

*.EVENT='10946 trace name context forever, level 8388608'

This is required for the supplemental UTL_FILE_DIR parameter behavior.


40. Phase 34: Run AutoConfig on Primary Application Tier

On run file system:

cd <EBS_ROOT>

source EBSapps.env run

cd $ADMIN_SCRIPTS_HOME

./adautocfg.sh

On patch file system:

source EBSapps.env patch

cd $ADMIN_SCRIPTS_HOME

./adautocfg.sh

41. Phase 35: Configure Standby AutoConfig, If Physical Hostname Setup

If using physical database and application tier hostnames, configure standby.

41.1 Enable Flashback on Standby

alter system set db_recovery_file_dest_size=32g scope=both;
alter system set db_recovery_file_dest='<FRA_LOCATION>' scope=both;
alter system set db_flashback_retention_target=1440 scope=both;

Stop recovery:

alter database recover managed standby database cancel;

Check flashback:

select flashback_on from v$database;

Enable if needed:

alter database flashback on;

41.2 Convert Physical Standby to Snapshot Standby

alter database convert to snapshot standby;
alter database open;

41.3 Run AutoConfig on Standby Database

cd <26ai_ORACLE_HOME>/appsutil

. ./txkSetCfgCDB.env dboraclehome=<26ai_ORACLE_HOME>

perl $ORACLE_HOME/appsutil/bin/txkPostPDBCreationTasks.pl \
-dboraclehome=<26ai_ORACLE_HOME> \
-outdir=<26ai_ORACLE_HOME>/appsutil/log \
-cdbsid=<CDB_SID> \
-pdbsid=<PDB_NAME> \
-appsuser=APPS \
-dbport=<DB_PORT> \
-generatepasswordfile=no \
-servicetype=onpremise

41.4 Run AutoConfig on Standby Application Tier

Run file system:

cd <EBS_ROOT>

source EBSapps.env run

cd $ADMIN_SCRIPTS_HOME

./adautocfg.sh

Patch file system:

source EBSapps.env patch

cd $ADMIN_SCRIPTS_HOME

./adautocfg.sh

41.5 Revert Snapshot Standby to Physical Standby

shutdown immediate;

startup mount;

alter database convert to physical standby;

alter database recover managed standby database disconnect from session;

Oracle’s standby AutoConfig section uses flashback, converts physical standby to snapshot standby, performs AutoConfig-related configuration, and then converts it back to physical standby with managed recovery enabled.


42. Phase 36: Regenerate Product JAR Files

On run APPL_TOP:

source EBSapps.env run

adadmin

Choose:

Generate Applications Files
Generate Product JAR Files

Then:

Compile/Reload Applications Database Entities
Reload JAR Files to Database

43. Phase 37: Start Application Services

source EBSapps.env run

cd $ADMIN_SCRIPTS_HOME

./adstrtal.sh -mode=allnodes

Check services:

./adopmnctl.sh status

44. Phase 38: Final Validation Checklist

44.1 Database Validation

select name, open_mode, database_role
from v$database;
show pdbs;
select comp_name, version, status
from dba_registry
order by comp_name;

44.2 Invalid Object Validation

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

44.3 EBS Login Validation

Validate:

TestStatus
EBS login page opensPASS / FAIL
APPS login worksPASS / FAIL
Forms launch worksPASS / FAIL
Concurrent manager startsPASS / FAIL
Sample concurrent request completesPASS / FAIL
Workflow mailer status checkedPASS / FAIL
OACORE logs cleanPASS / FAIL
Apache logs cleanPASS / FAIL

44.4 Concurrent Manager Validation

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

44.5 Data Guard Validation

select database_role, open_mode
from v$database;
select name, value, unit
from v$dataguard_stats;
select sequence#, applied
from v$archived_log
order by first_time;

Broker validation:

dgmgrl sys/<SYS_PASSWORD>@<PRIMARY_TNS_ALIAS>
show configuration;
show database verbose '<STANDBY_DB_UNIQUE_NAME>';

45. Common Issues and Troubleshooting

Issue 1: Standby Not Applying Redo

Check:

select process, status, thread#, sequence#
from v$managed_standby;

Restart recovery:

alter database recover managed standby database cancel;

alter database recover managed standby database disconnect from session;

Issue 2: TNS Connection Failure After Switching Oracle Home

Check:

echo $ORACLE_HOME
echo $TNS_ADMIN
tnsping <ALIAS>
lsnrctl status

Review:

$ORACLE_HOME/network/admin/listener.ora
$ORACLE_HOME/network/admin/tnsnames.ora
$ORACLE_HOME/network/admin/sqlnet.ora

Issue 3: AutoConfig Fails Due to UTL_FILE_DIR Directories

Create missing directories:

mkdir -p <26ai_ORACLE_HOME>/../temp/<PDB_NAME>
mkdir -p <26ai_ORACLE_HOME>/appsutil/outbound/<CONTEXT_NAME>

Then rerun UTL_FILE_DIR configuration and AutoConfig.


Issue 4: Invalid Objects After Upgrade

Run:

export ORACLE_PDB_SID=<PDB_NAME>

sqlplus "/ as sysdba" @$ORACLE_HOME/rdbms/admin/utlrp.sql

Check:

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

Issue 5: Data Guard Broker Not Starting

Check:

show parameter dg_broker

Enable:

alter system set dg_broker_start=true;

Then:

dgmgrl sys/<SYS_PASSWORD>@<PRIMARY_TNS_ALIAS>
enable configuration;
show configuration;

46. Apps DBA Execution Command Summary

StepCommand / Utility
Stop Appsadstpall.sh -mode=allnodes
Generate CDB TNStxkGenCDBTnsAdmin.pl
Generate PDB TNStxkGenPDBTnsAdmin.pl
Upgrade DBautoupgrade.jar -mode deploy
Run datapatch$ORACLE_HOME/OPatch/datapatch
Compile invalidsutlrp.sql
Revoke privilegesadrevoke.sql
Gather SYS statsadstats.sql
Configure PDBtxkPostPDBCreationTasks.pl
Configure RAC nodetxkCfgPDBRACNode.pl
Update UTL_FILE_DIRtxkCfgUtlfileDir.pl
Run AutoConfig Appsadautocfg.sh
Start Appsadstrtal.sh -mode=allnodes
Generate JAR filesadadmin
Check DB patchescheckDBpatch.sh

47. Final Production Readiness Checklist

AreaCheckStatus
BackupRMAN backup completedPending / Done
StandbyStandby synchronized before upgradePending / Done
AppsApplication stopped cleanlyPending / Done
Listener26ai listener startedPending / Done
AutoUpgrade AnalyzeCompleted successfullyPending / Done
AutoUpgrade DeployCompleted successfullyPending / Done
DatapatchCompleted successfullyPending / Done
RegistryAll components VALIDPending / Done
InvalidsReviewed and compiledPending / Done
AutoConfig DBCompletedPending / Done
AutoConfig AppsCompleted on run and patch FSPending / Done
ETCCCompleted on DB nodesPending / Done
EDBPCParameters validatedPending / Done
StandbyRedo apply runningPending / Done
EBS LoginLogin successfulPending / Done
Concurrent ManagerRunningPending / Done
Business ValidationCompleted by usersPending / Done

48. Conclusion

Upgrading Oracle E-Business Suite 12.2 from Oracle Database 19c to Oracle AI Database 26ai with an existing physical standby requires careful coordination between the database upgrade, Data Guard configuration, EBS AutoConfig, application tier validation, and post-upgrade checks.

From an Apps DBA perspective, the most critical points are:

  1. Prepare the 26ai Oracle Home on both primary and standby.
  2. Ensure standby redo apply can continue during upgrade.
  3. Use AutoUpgrade with the correct standby log shipping setting.
  4. Run all EBS-specific post-upgrade tasks.
  5. Run AutoConfig on database and application tiers.
  6. Validate EBS login, concurrent processing, invalid objects, registry components, and Data Guard synchronization.

A successful upgrade is not only about completing AutoUpgrade. It is about ensuring that EBS, database, standby, network, concurrent processing, and integrations are all working correctly after the upgrade.

No comments:

Post a Comment