The Concept

Starting with Oracle Enterprise Manager (OEM) 13.5 RU24 (October 2024), Oracle introduced the Holistic Patch for OEM — a unified patching model that consolidates several separate updates into a single coordinated package.

Previously, administrators had to patch:

* The OMS and Agents with the quarterly Release Update (RU).
* OEM Application via the System Patch Bundle (SPB).
* WebLogic CPU and JDK manually.

There was an element of complication because of the need to keep the solution homogeneous. With the Holistic Patch, the last two steps are merged into a single patch bundle.

Now we have a new Holistic patch for OEM that is released with each new OMS Release Update.

How It Works ?

Each quarter, it is recommended to do the following procedure:

1- Apply the RU to update the OMS and Agents.

2- Then apply the corresponding Holistic Patch to update WebLogic, the JDK, and all related security components.

The following Oracle Notes should guide you into a safe deployment of this strategy :
* If you are using OEM 13.5 : (Doc ID 3002450.1) .
* If you are using OEM 24.1 : (Doc ID 3082475.1).

Below is a walk-through of the steps I performed to apply the July 2025 Holistic Patch for OEM 13.5.
This procedure assumes the OMS and Agents have already been patched to 13.5 RU27 (July 2025).

Preparation

Download, copy, and unzip the related patches, in this case :


  • Patch 34761383: DB Client 19c Upgrade for FMW 12.2.1.4.0
  • Patch 35039230: PATCH 34761383 FAILS DURING UPGRADE DUE TO UPDATED ORACLE_COMMON/JDK/JRE
  • Patch 31190532: PROVIDE A PATCH USING INSTALLER AUTOUPDATE PATCH FEATURE FOR OL8 OS PACKAGES CHECKS
  • Patch 38194776: Oracle Enterprise Manager 13c Release 5 Holistic Patch for Oracle Management Service – July 2025

Before proceeding, plan your rollback strategy — For instance I took a VM snapshot of my OEM machine and created a guaranteed restore point for the repository database:

SQL> select name from v$restore_point;

no rows selected

SQL> create restore point CLEAN_DB guarantee flashback database;

Restore point created.

SQL> select name from v$restore_point;

NAME
--------------------------------------------------------------------------------
CLEAN_DB

Step 1 — Upgrade the DB Client (19c)

This step is required only once before applying your first Holistic Patch (see Doc ID 3060775.1).

If you haven’t done this before, check your current client version of your OMS Home :

export ORACLE_HOME = /opt/app/oracle/product/MiddleWare13cR5
cd $ORACLE_HOME/bin
./sqlplus -version

SQL*Plus: Release 12.1.0.2.0 Production

The client is not in 19c, so let’s upgrade this client :

Stop the OMS

oracle@Machine1:/home/oracle/ [EM13CR5] emctl stop oms -all
Oracle Enterprise Manager Cloud Control 13c Release 5
Copyright (c) 1996, 2021 Oracle Corporation. All rights reserved.
Stopping Oracle Management Server...
WebTier Successfully Stopped
Oracle Management Server Successfully Stopped
AdminServer Successfully Stopped
Oracle Management Server is Down
JVMD Engine is Down

Run Preliminary Scripts

Run changePerm.sh from Patch 34761383 on the OMS Home :

oracle@Machine1:/opt/software/34761383/ [EM13CR5] ./changePerm.sh /opt/app/oracle/product/MiddleWare13cR5
Release 6 is Not in the /etc/redhat-release
Change permission of /opt/app/oracle/product/MiddleWare13cR5/QOpatch/qopiprep.bat
Update areasQueries
Rename /opt/app/oracle/product/MiddleWare13cR5/bin/skgxpinfo to /opt/app/oracle/product/MiddleWare13cR5/bin/skgxpinfo.12c.bak

Starting rollback of Patches. This action may take some time ..........
ORACLE_HOME = /opt/app/oracle/product/MiddleWare13cR5
PATCHES_LIST_IN_ORDER = 29494060,33779451,33897347,34454476
ONEOFF_PATCHES = 34830313
####################### Begin : rollbackOneoffPatches() ########################
ORACLE_HOME=/opt/app/oracle/product/MiddleWare13cR5
Patches to be rolled back=34830313

Running : /opt/app/oracle/product/MiddleWare13cR5/OPatch/opatch lspatches -oh /opt/app/oracle/product/MiddleWare13cR5 | grep -E "34830313"

Patch ID(s):

Rollback of Oneoff patch operation is not needed.Continue....

########################## End : rollbackOneoffPatches() ########################

real 0m5.871s
user 0m13.874s
sys 0m0.584s
####################### Begin : rollbackPatches() ########################
ORACLE_HOME=/opt/app/oracle/product/MiddleWare13cR5
Patches to be rolled back=29494060|33779451|33897347|34454476

Running : /opt/app/oracle/product/MiddleWare13cR5/OPatch/opatch lspatches -oh /opt/app/oracle/product/MiddleWare13cR5 | grep -E "29494060|33779451|33897347|34454476"

Patch ID(s):

Rollback operation is not needed.Continue with Thin Installer

########################## End : rollbackPatches() ########################

real 0m5.957s
user 0m14.772s
sys 0m0.530s
All Success

Then, from Patch 35039230, run changePermJDK.sh on the OMS Home :

oracle@Machine1:/opt/software/35039230/ [EM13CR5] ./changePermJDK.sh /opt/app/oracle/product/MiddleWare13cR5
Change permission of /opt/app/oracle/product/MiddleWare13cR5/oracle_common/jdk/jre/legal/jdk
Change permission of /opt/app/oracle/product/MiddleWare13cR5/oracle_common/jdk/jre/legal/javafx
Change permission of /opt/app/oracle/product/MiddleWare13cR5/oracle_common/jdk/legal/javafx
Change permission of /opt/app/oracle/product/MiddleWare13cR5/oracle_common/jdk/jre/COPYRIGHT
Change permission of /opt/app/oracle/product/MiddleWare13cR5/oracle_common/jdk/jre/LICENSE
Change permission of /opt/app/oracle/product/MiddleWare13cR5/oracle_common/jdk/jre/THIRDPARTYLICENSEREADME.txt
oracle@Machine1:/opt/software/35039230/ [EM13CR5]

These scripts fix permissions in the Middleware home and JDK directories.

Attempt the DB Client Upgrade

oracle@Machine1:/opt/software/34761383/ [EM13CR5] export ORACLE_HOME=/opt/app/oracle/product/MiddleWare13cR5
oracle@Machine1:/opt/software/34761383/ [EM13CR5] ./fmw_12.2.1.19.0_dbclient_linux64.bin -invPtrLoc ${ORACLE_HOME}/oraInst.loc -silent ORACLE_HOME=${ORACLE_HOME}
Launcher log file is /tmp/OraInstall2025-09-10_10-34-53AM/launcher2025-09-10_10-34-53AM.log.
Checking if CPU speed is above 300 MHz. Actual 2893.202 MHz Passed
Checking swap space: must be greater than 512 MB. Actual 4051 MB Passed
Checking if this platform requires a 64-bit JVM. Actual 64 Passed (-d64 flag is not required)
Checking temp space: must be greater than 300 MB. Actual 7269 MB Passed
Preparing to launch the Oracle Universal Installer from /tmp/OraInstall2025-09-10_10-34-53AM
Log: /tmp/OraInstall2025-09-10_10-34-53AM/install2025-09-10_10-34-53AM.log
Setting ORACLE_HOME...
Copyright (c) 1996, 2022, Oracle and/or its affiliates. All rights reserved.
Skipping Software Updates
Starting check : CertifiedVersions
Expected result: One of oracle-8, redhat-7, oracle-7, SuSE-11, SuSE-12, SuSE-15
Actual Result: redhat-n/a
Check complete. The overall result of this check is: Passed
CertifiedVersions Check: Success.

Starting check : Packages
Checking for binutils-2.23.52.0.1; found binutils-2.30-117.0.3.el8-x86_64. Passed
Checking for compat-libcap1-1.10; Not found. Failed
Checking for compat-libstdc++-33-3.2.3-x86_64; Not found. Failed
Checking for libgcc-4.8.2-x86_64; found libgcc-8.5.0-16.0.2.el8_7-x86_64. Passed
Checking for libstdc++-4.8.2-x86_64; found libstdc++-8.5.0-16.0.2.el8_7-x86_64. Passed
Checking for libstdc++-devel-4.8.2-x86_64; found libstdc++-devel-8.5.0-16.0.2.el8_7-x86_64. Passed
Checking for sysstat-10.1.5; found sysstat-11.7.3-7.0.1.el8_7.1-x86_64. Passed
Checking for gcc-4.8.2; found gcc-8.5.0-16.0.2.el8_7-x86_64. Passed
Checking for gcc-c++-4.8.2; found gcc-c++-8.5.0-16.0.2.el8_7-x86_64. Passed
Checking for ksh-...; found ksh-20120801-257.0.1.el8-x86_64. Passed
Checking for make-3.82; found make-1:4.2.1-11.el8-x86_64. Passed
Checking for glibc-2.17-x86_64; found glibc-2.28-211.0.1.el8-x86_64. Passed
Checking for glibc-devel-2.17-x86_64; found glibc-devel-2.28-211.0.1.el8-x86_64. Passed
Checking for libaio-0.3.109-x86_64; found libaio-0.3.112-1.el8-x86_64. Passed
Checking for libaio-devel-0.3.109-x86_64; found libaio-devel-0.3.112-1.el8-x86_64. Passed
Check complete. The overall result of this check is: Failed

Problem: Some recommended packages are missing (see above).
Recommendation: You may actually have installed packages which have obsoleted these, in which case you can successfully continue with the install. If you have not, it is recommended that you do not continue. Refer to the product release notes to find out how to get the missing packages and update the system.
Error: Check:Packages failed.

Starting check : Kernel
Checking for VERSION=3.10.0; found VERSION=5.15.0-100.96.32.el8uek.x86_64. Passed
Checking for hardnofiles=4096; found hardnofiles=262144. Passed
Checking for softnofiles=4096; found softnofiles=262144. Passed
Check complete. The overall result of this check is: Passed
Kernel Check: Success.

Starting check : TotalMemory
Expected result: 1024MB
Actual Result: 15704MB
Check complete. The overall result of this check is: Passed
TotalMemory Check: Success.

Starting check : CheckJDKVersion
Expected result: 1.8.0_341
Actual Result: 1.8.0_341
Check complete. The overall result of this check is: Passed
CheckJDKVersion Check: Success.

Prereq failed. Aborting Install
Sep 10, 2025 10:35:04 AM oracle.as.install.engine.modules.configuration.ConfigurationModule onExit
INFO: Cleaning up Configuration Module

The log(s) can be found here: /tmp/OraInstall2025-09-10_10-34-53AM.
ERROR: Installer execution failed (1).

This upgrade might work for you right away.

If it fails due to missing packages (As it was the case for me here), follow Doc ID 3060775.1 and rerun the installer with the 31190532 patch metadata:

We restart the client upgrade with -prereqConfigLoc clause :

[oracle@Machine1 34761383]$ ./fmw_12.2.1.19.0_dbclient_linux64.bin -invptrloc $ORACLE_HOME/oraInst.loc -silent ORACLE_HOME=$ORACLE_HOME -prereqConfigLoc /opt/software/31190532/prereq_metadata/oracle.as.install.ohs.prerequisite/prereq/
Launcher log file is /tmp/OraInstall2025-09-10_11-10-02AM/launcher2025-09-10_11-10-02AM.log.
Checking if CPU speed is above 300 MHz. Actual 2893.202 MHz Passed
Checking swap space: must be greater than 512 MB. Actual 4051 MB Passed
Checking if this platform requires a 64-bit JVM. Actual 64 Passed (-d64 flag is not required)
Checking temp space: must be greater than 300 MB. Actual 7050 MB Passed
Preparing to launch the Oracle Universal Installer from /tmp/OraInstall2025-09-10_11-10-02AM
Log: /tmp/OraInstall2025-09-10_11-10-02AM/install2025-09-10_11-10-02AM.log
Setting ORACLE_HOME...
Copyright (c) 1996, 2022, Oracle and/or its affiliates. All rights reserved.
Skipping Software Updates
Starting check : CertifiedVersions
Expected result: One of redhat-8, redhat-7, redhat-6, oracle-6, oracle-8, oracle-7, SuSE-11, SuSE-12, SuSE-15
Actual Result: redhat-n/a
Check complete. The overall result of this check is: Passed
CertifiedVersions Check: Success.

Starting check : Packages
Checking for binutils-2.23.52.0.1; found binutils-2.30-117.0.3.el8-x86_64. Passed
Checking for libcap-2.25-9; found libcap-2.48-4.el8-x86_64. Passed
Checking for libstdc++-8.2.1-3.5.0.1.el8-x86_64; found libstdc++-8.5.0-16.0.2.el8_7-x86_64. Passed
Checking for libgcc-4.8.2-x86_64; found libgcc-8.5.0-16.0.2.el8_7-x86_64. Passed
Checking for libstdc++-devel-4.8.2-x86_64; found libstdc++-devel-8.5.0-16.0.2.el8_7-x86_64. Passed
Checking for sysstat-10.1.5; found sysstat-11.7.3-7.0.1.el8_7.1-x86_64. Passed
Checking for gcc-4.8.2; found gcc-8.5.0-16.0.2.el8_7-x86_64. Passed
Checking for gcc-c++-4.8.2; found gcc-c++-8.5.0-16.0.2.el8_7-x86_64. Passed
Checking for ksh-...; found ksh-20120801-257.0.1.el8-x86_64. Passed
Checking for make-3.82; found make-1:4.2.1-11.el8-x86_64. Passed
Checking for glibc-2.17-x86_64; found glibc-2.28-211.0.1.el8-x86_64. Passed
Checking for glibc-devel-2.17-x86_64; found glibc-devel-2.28-211.0.1.el8-x86_64. Passed
Checking for libaio-0.3.109-x86_64; found libaio-0.3.112-1.el8-x86_64. Passed
Checking for libaio-devel-0.3.109-x86_64; found libaio-devel-0.3.112-1.el8-x86_64. Passed
Check complete. The overall result of this check is: Passed
Packages Check: Success.

Starting check : Kernel
Checking for VERSION=3.10.0; found VERSION=5.15.0-100.96.32.el8uek.x86_64. Passed
Checking for hardnofiles=4096; found hardnofiles=262144. Passed
Checking for softnofiles=4096; found softnofiles=262144. Passed
Check complete. The overall result of this check is: Passed
Kernel Check: Success.

Starting check : TotalMemory
Expected result: 1024MB
Actual Result: 15704MB
Check complete. The overall result of this check is: Passed
TotalMemory Check: Success.

Starting check : CheckJDKVersion
Expected result: 1.8.0_241
Actual Result: 1.8.0_341
Check complete. The overall result of this check is: Passed
CheckJDKVersion Check: Success.

Validations are enabled for this session.
Verifying data
Copying Files
Percent Complete : 10
Percent Complete : 20
Percent Complete : 30
Percent Complete : 40
Percent Complete : 50
Percent Complete : 60
Percent Complete : 70
Percent Complete : 80
Percent Complete : 90
Percent Complete : 100

The installation of Database Client 12.2.1.19.0 completed successfully.
Logs successfully copied to /opt/app/oracle/oraInventory/logs.

This time the upgrade is fine.
Verify the client version (19.14 is the expected value, As per july 2025, regardless of your repository database or OMS patch level):

[oracle@Machine1 34761383]$ $ORACLE_HOME/bin/sqlplus -version

SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.14.0.0.0

Holistic Patch 13.5.0.27 :

Step 2 — Apply the Holistic Patch

Start the OMS in admin_only mode :

[oracle@Machine1 software]$ emctl start oms -admin_only
Oracle Enterprise Manager Cloud Control 13c Release 5
Copyright (c) 1996, 2021 Oracle Corporation. All rights reserved.
Starting Admin Server only...
Admin Server Successfully Started

Ensure the OMSPatcher utility is in your path:

[oracle@Machine1 software]$ echo $ORACLE_HOME
/opt/app/oracle/product/MiddleWare13cR5
[oracle@Machine1 software]$ export PATH=$PATH:/opt/app/oracle/product/MiddleWare13cR5/OMSPatcher
[oracle@Machine1 software]$ which omspatcher
/opt/app/oracle/product/MiddleWare13cR5/OMSPatcher/omspatcher

Analyze the Patch

We analyze the patch before applying it, the omspatcher tool is used, as for the OMS RU patching, but with the -spb_patch clause :

[oracle@Machine1 software]$ omspatcher apply /opt/software/38194776/ -spb_patch -analyze

SUCCESS :: The minimum Release Update (RU) check passed for applying the given holistic patch. Minimum OMS RU Version is 13.5.0.27

JDK update log location :: /opt/app/oracle/product/MiddleWare13cR5/cfgtoollogs/omspatcher/SPB_PATCH/jdk_update_Wed_Sep_10_11_25_12_2025.log

SPB JDK version :: 1.8.0.461, Env JDK version :: 1.8.0.341

The Env version is lower as compared to JDK included in patch :: JDK will be updated

OPatch update log :: /opt/app/oracle/product/MiddleWare13cR5/cfgtoollogs/omspatcher/SPB_PATCH/opatch_update_Wed_Sep_10_11_25_14_2025.log

The Env Opatch version :: 13.9.4.2.5

The SPB Opatch version :: 13.9.4.2.20

The Environment Opatch version is low as per OPatch included in Patch :: OPatch will be updated

OMSPatcher analyze log file :: /opt/app/oracle/product/MiddleWare13cR5/cfgtoollogs/omspatcher/SPB_PATCH/omspatcher_analyze_Wed_Sep_10_11_25_15_2025.log

Running Command :: /opt/app/oracle/product/MiddleWare13cR5/OPatch/opatch lspatches -oh /opt/app/oracle/product/MiddleWare13cR5

Running Command :: /opt/app/oracle/product/MiddleWare13cR5/OPatch/opatch prereq CheckForNoOpPatches -oh /opt/app/oracle/product/MiddleWare13cR5 -phbasefile /opt/app/oracle/product/MiddleWare13cR5/linux64_patchlist.txt -silent

Running Command :: /opt/app/oracle/product/MiddleWare13cR5/OPatch/opatch prereq CheckConflictAgainstOH -oh /opt/app/oracle/product/MiddleWare13cR5 -phbasefile /opt/app/oracle/product/MiddleWare13cR5/linux64_patchlist.txt -silent

OMSPatcher succeeded.
[oracle@Machine1 software]$

Apply the Patch

As the analysis passes successfully, we proceed to applying the patch.

This command:
* Updates JDK (e.g., to 1.8.0_461)
* Updates OPatch if needed
* Applies the SPB sub-patches automatically
* Restarts the OMS as part of the process

[oracle@Machine1 software]$ omspatcher apply /opt/software/38194776/ -spb_patch

SUCCESS :: The minimum Release Update (RU) check passed for applying the given holistic patch. Minimum OMS RU Version is 13.5.0.27

JDK update log location :: /opt/app/oracle/product/MiddleWare13cR5/cfgtoollogs/omspatcher/SPB_PATCH/jdk_update_Wed_Sep_10_11_30_13_2025.log

SPB JDK version :: 1.8.0.461, Env JDK version :: 1.8.0.341

The Env version is lower as compared to JDK included in patch :: JDK will be updated
Updating the JDK now...
Stopping the OMS...
Oracle Enterprise Manager Cloud Control 13c Release 5
Copyright (c) 1996, 2021 Oracle Corporation. All rights reserved.
Stopping Oracle Management Server...
Oracle Management Server Already Stopped
Oracle Management Server is Down
JVMD Engine is Down

Back_up Java folder :: /opt/app/oracle/product/MiddleWare13cR5/oracle_common/jdk_1757496623

New Java version is...
java version "1.8.0_461"
Java(TM) SE Runtime Environment (build 1.8.0_461-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.461-b25, mixed mode)

Updated Java Successfully

OPatch update log :: /opt/app/oracle/product/MiddleWare13cR5/cfgtoollogs/omspatcher/SPB_PATCH/opatch_update_Wed_Sep_10_11_30_23_2025.log

The Env Opatch version :: 13.9.4.2.5

The SPB Opatch version :: 13.9.4.2.20

The Environment Opatch version is low as per OPatch included in Patch :: OPatch will be updated
Updating the Opatch now.......
Updated Opatch Successfully.......

OMSPatcher analyze log file :: /opt/app/oracle/product/MiddleWare13cR5/cfgtoollogs/omspatcher/SPB_PATCH/omspatcher_analyze_Wed_Sep_10_11_31_01_2025.log

Running Command :: /opt/app/oracle/product/MiddleWare13cR5/OPatch/opatch lspatches -oh /opt/app/oracle/product/MiddleWare13cR5

Running Command :: /opt/app/oracle/product/MiddleWare13cR5/OPatch/opatch prereq CheckForNoOpPatches -oh /opt/app/oracle/product/MiddleWare13cR5 -phbasefile /opt/app/oracle/product/MiddleWare13cR5/linux64_patchlist.txt -silent

Running Command :: /opt/app/oracle/product/MiddleWare13cR5/OPatch/opatch prereq CheckConflictAgainstOH -oh /opt/app/oracle/product/MiddleWare13cR5 -phbasefile /opt/app/oracle/product/MiddleWare13cR5/linux64_patchlist.txt -silent

OMSPatcher Automation Tool
Copyright (c) 2017, Oracle Corporation. All rights reserved.

OMSPatcher version : 13.9.5.26.0
OUI version : 13.9.4.0.0
Running from : /opt/app/oracle/product/MiddleWare13cR5
Log file location : /opt/app/oracle/product/MiddleWare13cR5/cfgtoollogs/omspatcher/opatch2025-09-10_11-33-20AM_1.log

OMSPatcher log file: /opt/app/oracle/product/MiddleWare13cR5/cfgtoollogs/omspatcher/SPB_PATCH/omspatcher_2025-09-10_11-33-21AM_apply.log

Please enter OMS weblogic admin server URL(t3s://Machine1.sig-ge.ch:7102):>
Please enter OMS weblogic admin server username(weblogic):>
Please enter OMS weblogic admin server password:>

Performing prerequisites.....

The following sub-patches are already applied to the OMS system:

36910011

The following sub-patches will be applied to the OMS system:

38015786 34809489 35965629 1221426 37894414 36789759 38108218 37925688 38051795 36905789 37894601 36316422 38042142 34065178 38073767 37074199 37887285 37284722 38156117 38194914

Loaded SPB properties successfully

Stopping the oms....

Oracle Enterprise Manager Cloud Control 13c Release 5
Copyright (c) 1996, 2021 Oracle Corporation. All rights reserved.
Stopping Oracle Management Server...
WebTier Successfully Stopped
Oracle Management Server Successfully Stopped
AdminServer Successfully Stopped
Oracle Management Server is Down
JVMD Engine is Down
Running the command :: /opt/app/oracle/product/MiddleWare13cR5/OPatch/opatch napply -oh /opt/app/oracle/product/MiddleWare13cR5 -phbasefile /opt/app/oracle/product/MiddleWare13cR5/linux64_patchlist.txt -silent

Log file to be checked to get the list of applied patches : /opt/app/oracle/product/MiddleWare13cR5/cfgtoollogs/opatch/opatch2025-09-10_11-41-24AM_1.log

Command ran successfully

Starting the oms....

Oracle Enterprise Manager Cloud Control 13c Release 5
Copyright (c) 1996, 2021 Oracle Corporation. All rights reserved.
Starting Oracle Management Server...
WebTier Successfully Started
Oracle Management Server Successfully Started
Oracle Management Server is Up
JVMD Engine is Up

Log file location: /opt/app/oracle/product/MiddleWare13cR5/cfgtoollogs/omspatcher/SPB_PATCH/omspatcher_2025-09-10_11-33-21AM_apply.log

OMSPatcher succeeded.

Conclusion

Patching OEM used to be tedious, with separate updates for OMS, Agents, WebLogic, and JDK — often leading to inconsistent environments or outdated components. And ignoring some of these patches is a security risk.

The Holistic Patch simplifies the post-OMS patching into one coordinated update.
If you’re maintaining Oracle Enterprise Manager, adopting the holistic patching approach is highly recommended.