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.