Enginatics always stays up to date with the latest technology. So right after the availability of Oracle E-Business Suite 12.2.12 has been announced, our team was eager to upgrade our EBS Demo 12.2.11 instance to the latest release, so anyone can test Blitz Report™ on the most recent software. Blitz Report™ is the fastest reporting solution for Oracle E-Business Suite. Steps that we have taken to perform the upgrade are presented below.

Applying prerequisite patches


References

Oracle E-Business Suite Release 12.2.12 Readme
Oracle E-Business Suite 12.2.12 Now Available
R12.1 / R12.2 : Oracle E-Business Suite Releases 12.1 and 12.2 Release Content Documents (Doc ID 1302189.1)

Upgrade Database to 11.2.0.4 or higher

Our EBS 12.2.11 instance already uses Oracle Database 19c. So this step will not be covered. Besides database upgrade alone is worth a dedicated article. Please refer to the upgrade instructions for your specific Oracle Database version on MOS.

Apply Required Database Patches

Determine the latest database PSU

Refer to the following document and the section for the latest applicable database RU for EBS 12.2:

Oracle E-Business Suite Release 12.2: Consolidated List of Patches and Technology Bug Fixes (Doc ID 1594274.1)

Search for the pattern ‘recommended Release Update’.

The latest patches at the moment of this research were:

34419443 - Database Release Update 19.17.0.0.221018
34411846 - Oracle JavaVM Component Release Update 19.17.0.0.221018

Download and unzip latest OPatch
Before patches application OPatch always should be updated to avoid unexpected issues.

$ cd $ORACLE_HOME
$ mv OPatch/ OPatch_bkp
$ cp ~/patches/p6880880_190000_Linux-x86-64.zip .
$ unzip p6880880_190000_Linux-x86-64.zip

Determine patches conflicts
If any conflicts are faced, please refer to MOS Documents to resolve them. Alternatively, My Oracle Support Patch Conflict Checker Tool can be used or Oracle Service Request can be created.

$ cd 34419443
$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./

Prereq “checkConflictAgainstOHWithDetail” passed.

$ cd 34411846
$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./

Prereq “checkConflictAgainstOHWithDetail” passed.

Shutdown apps and db services

$ . /u01/install/APPS/EBSapps.env run
$ cd $ADMIN_SCRIPTS_HOME
$ ./adstpall.sh
$ . /u01/install/APPS/19c/CDBVIS_demo.env
$ echo "shu immediate"|sqlplus '/as sysdba'
$ lsnrctl stop $ORACLE_SID

Apply patches with OPatch
Start screen to save session in case of network interruptions. If screen utility is not available on your server, I recommend to install it. It’s a very handy tool.

$ screen -S patching
$ cd 34419443
$ opatch apply
$ egrep -i "error|fail|ORA-|ac-|rc-"  /u01/install/APPS/12.1.0/cfgtoollogs/opatch/opatch2018-10-11_10-21-18AM_1.log
$ cd 34411846
$ opatch apply
$ egrep -i "error|fail|ORA-|ac-|rc-"  /u01/install/APPS/12.1.0/cfgtoollogs/opatch/opatch2018-10-11_10-23-02AM_1.log

Load Modified SQL Files into the Database
Datapatch can be run once for both OJVM and DB PSU in upgrade mode. The below instructions are applicable for a multitenant database.

SQL> sqlplus '/as sysdba'
SQL> startup upgrade
SQL> alter pluggable database all open upgrade;
SQL> quit;
$ cd $ORACLE_HOME/OPatch
$ ./datapatch -verbose
SQL> sqlplus '/as sysdba'
SQL> shutdown immediate
SQL> startup
SQL> alter pluggable database all open;

For a standalone database please use the following instructions

SQL> sqlplus '/as sysdba'
SQL> startup upgrade
$ cd $ORACLE_HOME/OPatch
$ ./datapatch -verbose
SQL> sqlplus '/as sysdba'
SQL> shutdown immediate;
SQL> startup

Recompile invalid objects

The following command can be used to recompile invalid objects in all containers in a multitenant database as per the following link.

$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl --n 1 --e -l /tmp --b utlrp --d $ORACLE_HOME/rdbms/admin utlrp.sql

For a standalone database please use the following instructions

$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus '/as sysdba'
SQL> @utlrp.sql

Apply latest WLS PSU to patch fs

Start a new patching cycle

For convenience passwords can be assigned to variables, so they don’t have to be provided manually.

$ read -s appspass
$ read -s systempass
$ read -s wlspass

Start new patching cycle (WLS admin server will be started automatically on run fs)

{ echo $appspass; echo $systempass; echo $wlspass; }|adop phase=prepare

Remove conflicting patches applied on top of previous WLS PSU:

{
. ~/EBSapps.env patch
cd $FMW_HOME/utils/bsu
$FMW_HOME/utils/bsu/bsu.sh -prod_dir=$FMW_HOME/wlserver_10.3 -status=applied -verbose -view
$FMW_HOME/utils/bsu/bsu.sh -remove -patchlist=TTGM,6VAM -prod_dir=$FMW_HOME/wlserver_10.3
$FMW_HOME/utils/bsu/bsu.sh -remove -patchlist=21Y4 -prod_dir=$FMW_HOME/wlserver_10.3
}

Apply Patch 34009030: WLS Patch Set Update 10.3.6.0.220719 (RAWM) to patch fs

{
. ~/EBSapps.env patch
cp /stage/patches/WLS_RUP/RAWM.jar $FMW_HOME/utils/bsu/cache_dir/
cp /stage/patches/WLS_RUP/patch-catalog_27884.xml $FMW_HOME/utils/bsu/cache_dir/
cd $FMW_HOME/utils/bsu
$FMW_HOME/utils/bsu/bsu.sh -install -patch_download_dir=$FMW_HOME/utils/bsu/cache_dir -patchlist=RAWM -prod_dir=$FMW_HOME/wlserver_10.3
}

Check Weblogic version after patch application

$ . $FMW_HOME/wlserver_10.3/server/bin/setWLSEnv.sh
$ java weblogic.version
 
WebLogic Server 10.3.6.0.220719 PSU Patch for BUG33172858 Mon Oct 4 16:20:26 UTC 2021

Apply DB ETCC patches

Run ETCC report on DB tier
Run the latest version of the EBS Technology Codelevel Checker via Patch 17537119. ETCC patches are required as a pre-requisite for latest AD and TXK RUP patches.

$ cd /stage/patches/ETCC
$ ./checkDBpatch.sh

List of patches to be applied:

p33525014_1917000DBRU_Linux-x86-64.zip

Shutdown database instance, identify and rollback conflicting patches.

$ echo "shu immediate"|sqlplus '/as sysdba'
$ lsnrctl stop $ORACLE_SID
 
$ unzip 'p*zip'
$ cd [patch number]
$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./
{
opatch rollback -id  -silent
}

Apply patches

For all above patches commands to apply are:

$ cd [patch number]
$ opatch apply
$ egrep -i "error|fail|ORA-|ac-|rc-"

Post installation tasks
Run datapatch and recompile invalid objects

$ lsnrctl start $ORACLE_SID
$ cd $ORACLE_HOME/OPatch
$ echo "startup"|sqlplus '/as sysdba'
$ ./datapatch -verbose

Recompilation instructions for a multitenant database

$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl --n 1 --e -l /tmp --b utlrp --d $ORACLE_HOME/rdbms/admin utlrp.sql

Recompilation instructions for a standalone database

SQL>@?/rdbms/admin/utlrp.sql

Re-run ETCC report to ensure, that all patches are applied now

[oracle@apps patches]$ . ~/EBSDB_database.env
[oracle@apps patches]$ ./checkDBpatch.sh
>>All the required one-off bugfixes are present in Database ORACLE_HOME.

Set Database Parameters
Parameters are needed to be adjusted as follows.

For a database version 12.1.0.2 only

optimizer_adaptive_features=false

For Oracle Database 11.2.0.4, Oracle Database 12.1.0.2, and Oracle Database 19c

“_disable_actualization_for_grant”=true

Commands to setup the above parameters are:

SQL> alter system set "_disable_actualization_for_grant"=true;
SQL> alter system set optimizer_adaptive_features=false;

Apply MT ETCC patches

Run ETCC report on MT tier

Run the latest version of the EBS Technology Codelevel Checker via Patch 17537119. This step is a prerequisite for applying the Latest AD and TXK Delta RUPS.

$ cd /stage/patches/ETCC
[oracle@apps patches]$ ./checkMTpatch.sh
 
========================================================================
PATCH RECOMMENDATION SUMMARY
===============================================================================
One or more products have bugfixes missing.
The default patch recommendations to install these missing bugfixes are:
 
-------------------------------------------------------------------------------
Oracle Fusion Middleware (FMW) - Web Tier 11.1.1.9.0
-------------------------------------------------------------------------------
  Patch 34251646
    - Filename: p34251646_111190_Linux-x86-64.zip
 
  Patch 34067016
    - Filename: p34067016_11119210420OSS_Linux-x86-64.zip
 
 
-------------------------------------------------------------------------------
Oracle Fusion Middleware (FMW) - oracle_common 11.1.1.9.0
-------------------------------------------------------------------------------
  Patch 34330735
    - Filename: p34330735_111190_Generic.zip
 
 
-------------------------------------------------------------------------------
Oracle WebLogic Server (WLS) 10.3.6.0.220719
-------------------------------------------------------------------------------
  Patch 13845626 [SU Patch [NMZH]]
    - Filename: p13845626_10360220719_Generic.zip
 
  Patch 31042881 [SU Patch [7BIA]]
    - Filename: p31042881_1036_Generic.zip
 
 
-------------------------------------------------------------------------------
Oracle WebLogic Server (WLS) BSU Patch V5
-------------------------------------------------------------------------------
Please apply Patch 33845432 to update to the latest WLS 10.3.6 Patching tool codeline.
 
       Filename:  p33845432_R12_GENERIC.zip
 
Apply the required patches and rerun this script.

Apply MT ETCC patches

Follow patch recommendation summary and apply patches. Patches below are tab-formatted showing dependencies. All pre-requisite patches should be applied before a dependent patch.

Oracle Fusion Middleware (FMW) – Web Tier 11.1.1.9.0

[-]6880880 latest opatch 111000
[-]34251646
[-]34067016

Extract the latest OPatch

$ . ~/EBSapps.env patch
$ . $FMW_HOME/SetWebtier.env
$ cd $ORACLE_HOME
$ mv OPatch/ OPatch_bkp
$ cp ~/patches/p6880880_111000_Linux-x86-64.zip .
$ unzip p6880880_111000_Linux-x86-64.zip
$ rm -f p6880880_111000_Linux-x86-64.zip

Installation instructions:

. ~/EBSapps.env patch
$ . $FMW_HOME/SetWebtier.env
#Verify that opatch is running from right OH
$ which opatch
$ echo $ORACLE_HOME
$ cd [patch number]
$ opatch apply
$ egrep -i "error|warning|fail|ora-|ac-|rc-" /u01/install/APPS/fs2/FMW_Home/webtier/cfgtoollogs/opatch/[opatch logfile name].log

Oracle Fusion Middleware (FMW) – oracle_common 11.1.1.9.0

[-]6880880 latest opatch 111000
[-]34330735

Extract the latest opatch

$ . ~/EBSapps.env patch
$ . $FMW_HOME/SetOracleCommon.env
$ cd $ORACLE_HOME
$ mv OPatch/ OPatch_bkp
$ cp ~/patches/p6880880_111000_Linux-x86-64.zip .
$ unzip p6880880_111000_Linux-x86-64.zip
$ rm -f p6880880_111000_Linux-x86-64.zip

Apply to patch fs Oracle Home

$ . ~/EBSapps.env patch
$ . $FMW_HOME/SetOracleCommon.env
#Verify that opatch is running from right OH
$ which opatch
$ echo $ORACLE_HOME
$ cd 34330735/oui 
$ opatch apply

Check logfiles for errors:

egrep -i "error|warning|fail|ora-|ac-|rc-" \
/u01/install/APPS/fs2/FMW_Home/oracle_common/cfgtoollogs/opatch/27120730_Aug_26_2019_15_39_00/[opatch logfile name].log

Oracle WebLogic Server (WLS) BSU Update

Please download from My Oracle Support and apply Patch 33845432 to update to the latest WLS 10.3.6 Patching tool codeline.

unzip p33845432_R12_GENERIC.zip

It extracts another zip p33800106_1036_Generic.zip.
Copy content of extracted p33800106_1036_Generic.zip file with the exception of README file to your SmartUpdate bsu directory (MW_HOME/utils/bsu).

. ~/EBSapps.env patch
unzip /stage/patches/ETCC/etcc-bundle/LINUX_X86-64/BSU_HOME/5/p33800106_1036_Generic.zip -d $FMW_HOME/utils/bsu

Run the script as follows (with two dots):

 cd $FMW_HOME/utils/bsu
. ./bsu_update.sh install
 
 
Installing Smart Update V4...
Updating bsu modules
Update was successful.

Oracle WebLogic Server (WLS) 10.3.6.0.200714

  Patch 13845626 [SU Patch [NMZH]]
    - Filename: p13845626_10360220719_Generic.zip
 
  Patch 31042881 [SU Patch [7BIA]]
    - Filename: p31042881_1036_Generic.zip

Increase memory allocation to prevent bsu fail

vi /u01/install/APPS/fs1/FMW_Home/utils/bsu/bsu.sh

Change from

MEM_ARGS=”-Xms512m -Xmx1024m -XX:+UseParallelGC”

to

MEM_ARGS=”-Xms1024m -Xmx2048m -XX:+UseParallelGC”

Apply patches

. ~/EBSapps.env patch
$ cp DTN2.jar patch-catalog_27158.xml $FMW_HOME/utils/bsu/cache_dir/
$ cd $FMW_HOME/utils/bsu
$ $FMW_HOME/utils/bsu/bsu.sh -install -patch_download_dir=$FMW_HOME/utils/bsu/cache_dir -patchlist=NMZH,7BIA -prod_dir=$FMW_HOME/wlserver_10.3

Re-run ETCC report to confirm that now all required patches present.

Apply patch environment as all above patches were installed to patch fs.

[oracle@apps ETCC]$ . ~/EBSapps.env patch
 ./checkMTpatch.sh

All required one-offs are confirmed as present.

Apply Consolidated Seed Table Upgrade

This step is applicable only for new installation customers and customers upgrading from Oracle E-Business Suite Release 12.2.2 to Release 12.2.12. Skipping this step as we have 12.2.11 installation.

Apply the Latest AD and TXK Delta RUPS

Reference:
Applying the Latest AD and TXK Release Update Packs to Oracle E-Business Suite Release 12.2 (Doc ID 1617461.1)

Patch research

You can refer to the following post to check if a EBS patch is applied.

[-]33600809 (R12.AD.C.Delta.14)
[-]34668508:R12.AD.C (Additional critical AD patch)
 
[-]33602997 (R12.TXK.C.Delta.14)
[-]34708635:R12.TXK.C (Additional critical TXK patch)

Pre-steps
Execute adgrants script by following the instructions in the readme of Patch 33600809:

1. Create $ORACLE_HOME/appsutil/admin on the database server.

2. Compare the version of adgrants.sql(UNIX) in $APPL_TOP/admin to that in patch directory.

$ grep '$Header' $ORACLE_HOME/appsutil/admin/adgrants.sql
 
        REM $Header: adgrants.sql 120.67.12020000.60 2018/04/26 02:32:13 jwsmith ship $
 
$ grep '$Header' /stage/patches/EBS12.2/ADTKX/30628681/admin/adgrants.sql
 
        REM $Header: adgrants.sql 120.67.12020000.121 2022/09/14 18:39:52 jwsmith ship $

3. Copy the higher version of adgrants.sql (UNIX) to $ORACLE_HOME/appsutil/admin.

$ cp -iv /stage/patches/EBS12.2/ADTKX/33600809/admin/adgrants.sql /u01/install/APPS/19c/appsutil/admin

4. Set the environment to point to ORACLE_HOME on the database server.

$ . ~/EBSDB_demo.env

For a multitenant database source a CDB environment file and set ORACLE_PDB_SID variable

$ . ~/CDBVIS_demo.env
$ export ORACLE_PDB_SID=EBSDB

5. Use SQL*Plus to run the script:

$ sqlplus /nolog
SQL> @$ORACLE_HOME/appsutil/admin/adgrants.sql APPS

Got warnings:

2019/08/27 07:28:14         453 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE          WARNING
ORA-00942: table or view does not exist, SQL: grant SELECT on "DBMS_UPG_STATUS$" to "APPS"
 
2019/08/27 07:28:14         453 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE          WARNING
ORA-00942: table or view does not exist, SQL: grant SELECT on "DBMS_UPG_STATUS$" to "SYSTEM" with grant option
 
2019/08/27 07:28:15         453 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE          WARNING
ORA-04042: procedure, function, package, or package body does not exist, SQL: grant EXECUTE on "DBMS_SCHEMA_COPY" to "APPS"
 
2019/08/27 07:28:15         453 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE          WARNING
ORA-04042: procedure, function, package, or package body does not exist, SQL: grant EXECUTE on "DBMS_SCHEMA_COPY" to "SYSTEM" with grant option
 
2019/08/27 07:28:15         453 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE          WARNING
ORA-00942: table or view does not exist, SQL: grant WRITE on "DIRECTORY FND_DIAG_DIR" to "APPS"
 
2019/08/27 07:28:15         453 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE          WARNING
ORA-00942: table or view does not exist, SQL: grant READ on "DIRECTORY FND_DIAG_DIR" to "APPS"

Solution:

Per Doc ID 2507343.1 those messages can be ignored.

Apply patches

read -s appspass
read -s systempass
read -s wlspass
 
. ~/EBSapps.env run
echo $appspass|adop -status -detail

Apply R12.AD.C.Delta.14 along with NLS and critical AD patches with “merge=yes” option:

{ echo $appspass; echo $systempass; echo $wlspass; }|adop phase=apply patches=33600809,34668508 merge=yes patchtop=/stage/patches/AD_TXK_upgrade workers=8

Apply R12.TXK.C.Delta.14 along with NLS and critical TXK patches with “merge=yes” option:

{ echo $appspass; echo $systempass; echo $wlspass; }|adop phase=apply patches=33602997,34708635 merge=yes patchtop=/stage/patches/AD_TXK_upgrade workers=8
 
adopscanlog -latest=yes
egrep -i "error|warning|fail|ora-|ac-|rc-" /u01/install/APPS/fs_ne/EBSapps/log/adop/68/20190827_081313/apply/apps/ADOP_MRG_20190827_1566886413/log/[adop log name].log

Update Database Tier to Latest Code

Will perform that step after all EBS patches are applied and fs cutover completed.

Apply Oracle E-Business Suite 12.2.12 Release Update Pack


Finally after applying all pre-requisite patches upgrade to 12.2.12 can be performed. For our instance Path B — Existing Customers (Release 12.2.11) should be followed.

Apply patches with adop

{ echo $appspass; echo $systempass; echo $wlspass; }|adop phase=apply patches=33527700 patchtop=/stage/patches/EBS12212_upgrade workers=8

Apply Oracle E-Business Suite Release 12.2.12 Online Help

{ echo $appspass; echo $systempass; echo $wlspass; }|adop phase=apply patches=33527707 patchtop=/stage/patches/Online_help_12212 workers=4

Check logfiles for errors

adopscanlog -latest=yes
 
egrep -i "error|warning|fail|ora-|ac-|rc-" /u01/install/APPS/fs_ne/EBSapps/log/adop/68/20190827_090009/apply/apps/28840850/log/[adop_log_file].log

Finish adop patching cycle

$ { echo $appspass; echo $systempass; echo $wlspass; }| adop phase=finalize
$ { echo $appspass; echo $systempass; echo $wlspass; }| adop phase=cutover
$ . ~/EBSapps.env run
$  { echo $appspass; echo $systempass; echo $wlspass; }|adop phase=cleanup
$  { echo $appspass; echo $systempass; echo $wlspass; }|adop phase=fs_clone

Post-steps

Compile invalid objects

$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl --n 1 --e -l /tmp --b utlrp --d $ORACLE_HOME/rdbms/admin utlrp.sql

Verify security configurations (required)

The administrator must log in to Oracle E-Business Suite using the local login page (http(s)://[host]:[port]/OA_HTML/AppsLocalLogin.jsp) to navigate to the console and unlock the system.

Update Database Tier to Latest Code

1. Execute the admkappsutil.pl utility to create the appsutil.zip file in $INST_TOP/admin/out.

$ perl $AD_TOP/bin/admkappsutil.pl

2. On the database tier (as the ORACLE user):

Source the environment for ORACLE_HOME.

$ cd $ORACLE_HOME
$ . $ORACLE_HOME/$CONTEXT_NAME.env

3. Uncompress appsutil.zip, under $ORACLE_HOME.

$ cd $ORACLE_HOME
$ unzip -o appsutil.zip

4. Run AutoConfig on $ORACLE_HOME.

$ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME/adautocfg.sh
 
$ egrep -i “error|warning|fail|ora-|ac-|rc-” /u01/install/APPS/12.1.0/appsutil/log/EBSDB_apps/10121547/adconfig.log

5. Run AutoConfig on the run file system. Run AutoConfig on all application tier nodes (as the APPLMGR user) by executing the applicable command:

$ sh $INST_TOP/admin/scripts/adautocfg.sh

Healthcheck


Restart application tier services and verify that following checks are passed:

– EBS login works.
– Forms open
– Number of target and actual concurrent processes are equal.
– Test concurrent requests successfully completed. Example of such requests: “CP PLSQL Regression Test”, “Active Users”
– Other components depending on instance-specific configuration. For example: workflow mailer.

Picture 1: Oracle EBS 12.2.12 home page

Oracle EBS 12.2.12 Administer Concurrent Managers form

Picture 2: Oracle EBS 12.2.12 Administer Concurrent Managers form

Oracle EBS 12.2.12 Concurrent Requests form

Picture 3: Oracle EBS 12.2.12 Concurrent Requests form

Conclusion


Please keep in mind that every EBS upgrade is unique due to different software, hardware versions, customizations. So it is better not to use above instructions on production environment. But I hope that this article will help you to understand EBS upgrade process and prepare your own project.