Sometimes we need to apply a few patches at a time, then the order of the patches being applied matters.
A few days ago I was trying to apply the database patch 31771877 to my 19C database. When checking conflicts, it failed because there is another patch 31743771 (JDK bundle patch) installed which overlays with 31771877:
[oracle@jeotest 31771877]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
Oracle Interim Patch Installer version 12.2.0.1.21
Copyright (c) 2021, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /opt/oracle/190000
Central Inventory : /opt/oraInventory
from : /opt/oracle/190000/oraInst.loc
OPatch version : 12.2.0.1.21
OUI version : 12.2.0.7.0
Log file location : /opt/oracle/190000/cfgtoollogs/opatch/opatch2021-01-11_12-33-20PM_1.log
Invoking prereq "checkconflictagainstohwithdetail"
ZOP-47: The patch(es) has supersets with other patches installed in the Oracle Home (or) among themselves.
Prereq "checkConflictAgainstOHWithDetail" failed.
In this case, I had to roll back the patch 31743771
[oracle@joetest 31771877]$ $ORACLE_HOME/OPatch/opatch rollback -id 31743771
Oracle Interim Patch Installer version 12.2.0.1.21
Copyright (c) 2021, Oracle Corporation. All rights reserved.
Oracle Home : /opt/oracle/190000
Central Inventory : /opt/oraInventory
from : /opt/oracle/190000/oraInst.loc
OPatch version : 12.2.0.1.21
OUI version : 12.2.0.7.0
Log file location : /opt/oracle/190000/cfgtoollogs/opatch/opatch2021-01-11_12-39-31PM_1.log
Patches will be rolled back in the following order:
31743771
The following patch(es) will be rolled back: 31743771
Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/opt/oracle/190000')
After that installed the patch 31771877 first, then the patch 31743771 on top of it.
[oracle@joetest 31771877]$ $ORACLE_HOME/OPatch/opatch apply
[oracle@joetest 31743771]$ $ORACLE_HOME/OPatch/opatch apply