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:
| Area | Purpose |
|---|---|
| Primary database preparation | Prepare 26ai Oracle Home and upgrade readiness |
| Standby database preparation | Clone 26ai Oracle Home and prepare redo apply |
| Data Guard handling | Ensure redo shipping and apply continue during upgrade |
| AutoUpgrade execution | Upgrade the primary database using Oracle AutoUpgrade |
| AutoConfig implementation | Configure EBS database and application tiers after upgrade |
| Post-upgrade validation | Verify 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:
- Reviewing the latest Oracle MOS documents.
- Validating all patches and certifications.
- Testing the complete procedure in a lower environment.
- Taking required backups.
- 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:
| Component | Current Version / Status |
|---|---|
| Application | Oracle E-Business Suite 12.2 |
| Source Database | Oracle Database 19c |
| Target Database | Oracle AI Database 26ai |
| Architecture | CDB/PDB |
| DR Setup | Physical Standby using Oracle Data Guard |
| Upgrade Method | AutoUpgrade |
| EBS Configuration | AutoConfig enabled |
| Apps Services | Will be stopped before upgrade |
| Standby Upgrade Method | Inline 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
| Phase | Activity |
|---|---|
| Phase 1 | Validate prerequisites |
| Phase 2 | Install 26ai Oracle Home on primary |
| Phase 3 | Clone 26ai Oracle Home to standby |
| Phase 4 | Prepare Data Guard for upgrade |
| Phase 5 | Stop EBS application services |
| Phase 6 | Start standby recovery from 26ai Oracle Home |
| Phase 7 | Run AutoUpgrade on primary |
| Phase 8 | Validate redo apply on standby |
| Phase 9 | Run post-upgrade database tasks |
| Phase 10 | Run AutoConfig on primary |
| Phase 11 | Run AutoConfig on standby, if applicable |
| Phase 12 | Start EBS services and validate |
5. Pre-Upgrade Checklist
Before starting the upgrade, verify the following.
5.1 EBS and Database Prerequisites
| Check | Validation |
|---|---|
| EBS version | EBS 12.2.7 or later |
| Source DB | Oracle Database 19c |
| Target DB | Oracle AI Database 26ai |
| AD/TXK level | Latest required AD/TXK patches applied |
| ETCC | Latest ETCC run and required fixes applied |
| Unsupported products | Confirm no unsupported EBS products are in use |
| Standby health | Physical standby tested and synchronized |
| Backup | Valid RMAN backup available |
| Flashback | Enabled where required |
| Downtime approval | Approved 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:
| NAME | OPEN_MODE | DATABASE_ROLE |
|---|---|---|
| CDBPROD | READ WRITE | PRIMARY |
6.2 Check PDB Status
show pdbs;
Expected:
| CON_ID | NAME | OPEN MODE |
|---|---|---|
| 2 | PDB$SEED | READ 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_NAME | VERSION | STATUS |
|---|---|---|
| Oracle Database Catalog Views | 19.x.x.x | VALID |
| Oracle Database Packages and Types | 19.x.x.x | VALID |
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:
| Status | Action |
|---|---|
| PASSED | Proceed |
| WARNING | Review and document |
| FAILED | Fix 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:
| NAME | VALUE |
|---|---|
| transport lag | Small or zero |
| apply lag | Small 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:
| Component | Status |
|---|---|
| CDB registry | VALID |
| PDB registry | VALID |
| EBS database objects | To 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:
| Utility | Purpose |
|---|---|
| ETCC | Confirms required technology patches |
| EDBPC | Confirms 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:
| Test | Status |
|---|---|
| EBS login page opens | PASS / FAIL |
| APPS login works | PASS / FAIL |
| Forms launch works | PASS / FAIL |
| Concurrent manager starts | PASS / FAIL |
| Sample concurrent request completes | PASS / FAIL |
| Workflow mailer status checked | PASS / FAIL |
| OACORE logs clean | PASS / FAIL |
| Apache logs clean | PASS / 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
| Step | Command / Utility |
|---|---|
| Stop Apps | adstpall.sh -mode=allnodes |
| Generate CDB TNS | txkGenCDBTnsAdmin.pl |
| Generate PDB TNS | txkGenPDBTnsAdmin.pl |
| Upgrade DB | autoupgrade.jar -mode deploy |
| Run datapatch | $ORACLE_HOME/OPatch/datapatch |
| Compile invalids | utlrp.sql |
| Revoke privileges | adrevoke.sql |
| Gather SYS stats | adstats.sql |
| Configure PDB | txkPostPDBCreationTasks.pl |
| Configure RAC node | txkCfgPDBRACNode.pl |
| Update UTL_FILE_DIR | txkCfgUtlfileDir.pl |
| Run AutoConfig Apps | adautocfg.sh |
| Start Apps | adstrtal.sh -mode=allnodes |
| Generate JAR files | adadmin |
| Check DB patches | checkDBpatch.sh |
47. Final Production Readiness Checklist
| Area | Check | Status |
|---|---|---|
| Backup | RMAN backup completed | Pending / Done |
| Standby | Standby synchronized before upgrade | Pending / Done |
| Apps | Application stopped cleanly | Pending / Done |
| Listener | 26ai listener started | Pending / Done |
| AutoUpgrade Analyze | Completed successfully | Pending / Done |
| AutoUpgrade Deploy | Completed successfully | Pending / Done |
| Datapatch | Completed successfully | Pending / Done |
| Registry | All components VALID | Pending / Done |
| Invalids | Reviewed and compiled | Pending / Done |
| AutoConfig DB | Completed | Pending / Done |
| AutoConfig Apps | Completed on run and patch FS | Pending / Done |
| ETCC | Completed on DB nodes | Pending / Done |
| EDBPC | Parameters validated | Pending / Done |
| Standby | Redo apply running | Pending / Done |
| EBS Login | Login successful | Pending / Done |
| Concurrent Manager | Running | Pending / Done |
| Business Validation | Completed by users | Pending / 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:
- Prepare the 26ai Oracle Home on both primary and standby.
- Ensure standby redo apply can continue during upgrade.
- Use AutoUpgrade with the correct standby log shipping setting.
- Run all EBS-specific post-upgrade tasks.
- Run AutoConfig on database and application tiers.
- 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