Can I apply an RU to a home with an MRP?

This question came up by a customer, and it was referring to the FAQ MOS note for MRPs. In brief, it was stated that you could apply a higher RU into a home where an MRP up to MRP3 had been installed in the previous home. So the question raised to me was: Can I apply an RU to a home with an MRP as it was mentioned in the FAQ document?

Can I apply an RU to a home with an MRP?

Photo by Liana S on Unsplash

Which note, and what’s the statement?

The FAQ2283 – Introducing Monthly Recommended Patches (MRPs) and FAQ stated the following under Q18:

Q18: When 19.21 DB RU is being applied , will opatch report a conflict if (19.20 DB RU + MRP 1 + MRP 2+MRP 3) are applied? What sort of conflict – Subset /Superset?

A: No. There will not be a conflict reported as the next RU will act as a superset of the prior 3 MRPs installed.

And a customer mailed me and asked whether this is correct. He was puzzled and tried to map this to his own patching strategy.

Then I did some internal investigation and tried to bring up my points. I’ve been told that this is working as long as you only apply MRP1, MRP2 and/or MRP3 to the home since those are supposed to be part of the next RU.

I had my doubts.

 

Let’s try it out

At first, I apply MRP3 to my 19.31 home. This is Patch 39661761: DATABASE MRP 19.31.0.0.260721, and it is password protected since it got superseeded by MRP4 for 19.31 already.

$ORACLE_HOME/OPatch/opatch napply ./39661761 OPatch.SKIP_VERIFY=true OPatch.SKIP_VERIFY_SPACE=true
Oracle Interim Patch Installer version 12.2.0.1.51
Copyright (c) 2026, Oracle Corporation.  All rights reserved.


Oracle Home       : /u01/app/oracle/product/19
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/19/oraInst.loc
OPatch version    : 12.2.0.1.51
OUI version       : 12.2.0.7.0
Log file location : /u01/app/oracle/product/19/cfgtoollogs/opatch/opatch2026-08-29_15-24-08PM_1.log

Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   38494116  38937302  39052286  39060241  39293442  39429942  39498075  39575331  39576482  39594515  39598920  39661105  39661114  

Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/u01/app/oracle/product/19')


Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...
Applying interim patch '38494116' to OH '/u01/app/oracle/product/19'
ApplySession: Optional component(s) [ oracle.oid.client, 19.0.0.0.0 ]  not present in the Oracle Home or a higher version is found.

Patching component oracle.ldap.rsf, 19.0.0.0.0...

Patching component oracle.rdbms.rsf, 19.0.0.0.0...

Patching component oracle.rdbms, 19.0.0.0.0...

Patching component oracle.ldap.client, 19.0.0.0.0...
Applying interim patch '38937302' to OH '/u01/app/oracle/product/19'

Patching component oracle.rdbms, 19.0.0.0.0...
Applying interim patch '39052286' to OH '/u01/app/oracle/product/19'

Patching component oracle.rdbms, 19.0.0.0.0...
Applying interim patch '39060241' to OH '/u01/app/oracle/product/19'

Patching component oracle.rdbms.dbscripts, 19.0.0.0.0...

Patching component oracle.ovm, 19.0.0.0.0...
Applying interim patch '39293442' to OH '/u01/app/oracle/product/19'

Patching component oracle.sdo, 19.0.0.0.0...
Applying interim patch '39429942' to OH '/u01/app/oracle/product/19'

Patching component oracle.rdbms, 19.0.0.0.0...
Applying interim patch '39498075' to OH '/u01/app/oracle/product/19'

Patching component oracle.rdbms, 19.0.0.0.0...
Applying interim patch '39575331' to OH '/u01/app/oracle/product/19'

Patching component oracle.rdbms.dbscripts, 19.0.0.0.0...
Applying interim patch '39576482' to OH '/u01/app/oracle/product/19'

Patching component oracle.perlint, 5.28.1.0.0...
Applying interim patch '39594515' to OH '/u01/app/oracle/product/19'

Patching component oracle.dbdev, 19.0.0.0.0...
Applying interim patch '39598920' to OH '/u01/app/oracle/product/19'

Patching component oracle.dbjava.jdbc, 19.0.0.0.0...

Patching component oracle.dbjava.ic, 19.0.0.0.0...
Applying interim patch '39661105' to OH '/u01/app/oracle/product/19'

Patching component oracle.rdbms.rsf, 19.0.0.0.0...

Patching component oracle.rdbms, 19.0.0.0.0...
Applying interim patch '39661114' to OH '/u01/app/oracle/product/19'

Patching component oracle.rdbms, 19.0.0.0.0...

Patching component oracle.network.rsf, 19.0.0.0.0...

Patching component oracle.rdbms.rsf, 19.0.0.0.0...
Patches 38494116,38937302,39052286,39060241,39293442,39429942,39498075,39575331,39576482,39594515,39598920,39661105,39661114 successfully applied.
Log file location: /u01/app/oracle/product/19/cfgtoollogs/opatch/opatch2026-08-29_15-24-08PM_1.log

OPatch succeeded.

Then I want to apply the RU 19.32 on top – in-place, into the existing Oracle Home.

So, we have 19.31 plus the MRP3 – and I’d like to add 19.32 to the same home.

It fails.

 $ORACLE_HOME/OPatch/opatch apply ./39472050
Oracle Interim Patch Installer version 12.2.0.1.52
Copyright (c) 2026, Oracle Corporation.  All rights reserved.


Oracle Home       : /u01/app/oracle/product/19
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/19/oraInst.loc
OPatch version    : 12.2.0.1.52
OUI version       : 12.2.0.7.0
Log file location : /u01/app/oracle/product/19/cfgtoollogs/opatch/opatch2026-08-29_17-29-24PM_1.log

Verifying environment and performing prerequisite checks...

Conflicts/Supersets for each patch are:

Patch : 39472050

	Bug Superset of 39598920
	Super set bugs are:
	39060101, 39128024, 39127997

	Bug Superset of 39498075
	Super set bugs are:
	39370763, 39360889

	Bug Superset of 39661114
	Super set bugs are:
	39661114

	Bug Superset of 38937302
	Super set bugs are:
	38937302

	Bug Superset of 39594515
	Super set bugs are:
	39594515

	Bug Superset of 39575331
	Super set bugs are:
	39575331

	Bug Superset of 39429942
	Super set bugs are:
	39429942

	Bug Superset of 39661105
	Super set bugs are:
	39661105

	Bug Superset of 39576482
	Super set bugs are:
	39576482

	Bug Superset of 39060241
	Super set bugs are:
	39060241

	Bug Superset of 38494116
	Super set bugs are:
	38494116

	Conflict with 39196236
	Conflict details:
	/u01/app/oracle/product/19/rdbms/admin/catmetviews.sql
	/u01/app/oracle/product/19/rdbms/xml/xsl/kutable.xsl
	/u01/app/oracle/product/19/rdbms/xml/schema/kustablt.xsd
	/u01/app/oracle/product/19/rdbms/xml/xsl/kucommon.xsl
	/u01/app/oracle/product/19/rdbms/admin/catnomta.sql
	/u01/app/oracle/product/19/rdbms/admin/c18.sql
	/u01/app/oracle/product/19/rdbms/xml/xsl/kustablc.xsl
	/u01/app/oracle/product/19/rdbms/xml/xsl/kulob.xsl
	/u01/app/oracle/product/19/rdbms/admin/catmetloadxsl.sql
	/u01/app/oracle/product/19/rdbms/admin/prvtxdba.plb
	/u01/app/oracle/product/19/rdbms/admin/dbmsplts.sql
	/u01/app/oracle/product/19/rdbms/xml/xsl/kuprtobj.xsl
	/u01/app/oracle/product/19/rdbms/admin/prvtplts.plb
	/u01/app/oracle/product/19/rdbms/xml/xsl/kuconstr.xsl
	/u01/app/oracle/product/19/rdbms/admin/catmetgrant1.sql
	/u01/app/oracle/product/19/rdbms/admin/prvtbpf.plb
	/u01/app/oracle/product/19/rdbms/admin/prvthpui.plb
	/u01/app/oracle/product/19/rdbms/xml/xsl/kuntab.xsl
	/u01/app/oracle/product/19/rdbms/admin/catpdeps.sql
	/u01/app/oracle/product/19/rdbms/xml/xsl/kuscommc.xsl
	/u01/app/oracle/product/19/rdbms/xml/xsl/kustorag.xsl
	/u01/app/oracle/product/19/rdbms/admin/catpspec.sql
	/u01/app/oracle/product/19/rdbms/xml/xsl/kuscomm.xsl
	/u01/app/oracle/product/19/rdbms/admin/catmetinsert.sql
	/u01/app/oracle/product/19/rdbms/admin/catdwgrd.sql
	/u01/app/oracle/product/19/rdbms/admin/catmettypes.sql
	/u01/app/oracle/product/19/rdbms/admin/prvtbpm.plb
	/u01/app/oracle/product/19/rdbms/admin/prvtbpw.plb
	/u01/app/oracle/product/19/rdbms/xml/xsl/kuuser.xsl
	/u01/app/oracle/product/19/rdbms/xml/xsl/kustable.xsl
	/u01/app/oracle/product/19/rdbms/admin/catmet2.sql
	/u01/app/oracle/product/19/rdbms/xml/xsl/kustbphy.xsl
	/u01/app/oracle/product/19/rdbms/admin/prvtbpui.plb

	Bug Superset of 39034528
	Super set bugs are:
	32005046

(... cut out the long list of fixes ...)

, 37452627

	Bug Superset of 39052286
	Super set bugs are:
	39052286

	Bug Superset of 39293442
	Super set bugs are:
	39293442


Following patches have conflicts: [   39196236   39472050 ]
Use the MOS Patch Conflict Checker "https://support.oracle.com/epmos/faces/PatchConflictCheck" to resolve.
See MOS documents 1941934.1 and 1299688.1 for additional information and resolution methods.


UtilSession failed: Reason - 
Superset Patch 39472050 has 
Subset Patch 39034528 which has overlay patches [39293442,39052286,39598920,39594515,39575331,39576482,39429942,39196236,38937302,39498075,39060241,38494116,39661114,39661105] and these overlay patches conflict with Superset Patch or are not included in Superest Patch

OPatch recommends any one of the following actions
  - Please rebuild the superset patch to make sure it supersedes all the relevent patch(es) (which are the subset patch and all of its overlay patches).
The rebuilt patch should contain bug fix [32005046,

(... cut out the long list of fixes ...)

  - Please rollback the relevant overlay patches of the subset patches and apply the superset patch
Log file location: /u01/app/oracle/product/19/cfgtoollogs/opatch/opatch2026-08-29_17-29-24PM_1.log

OPatch failed with error code 73

 

 

Why is this not working?

Well, the reason is not what I thought. It is way more obvious.

Look at my inventory, and the last lines:

./OPatch/opatch lspatches

39661114;Fix for Bug 39661114
39661105;Fix for Bug 39661105
39598920;MERGE ON DATABASE RU 19.31.0.0.0 OF 39060101 39127997 39128024
39594515;Fix for Bug 39594515
39576482;Fix for Bug 39576482
39575331;Fix for Bug 39575331
39498075;MERGE ON DATABASE RU 19.31.0.0.0 OF 39360889 39370763
39429942;  DB_DOMAIN NAME CHANGED TO UPPER CASE AUTOMATICALLY
39293442;Fix for Bug 39293442
39060241;Fix for Bug 39060241
39052286;Fix for Bug 39052286
38937302;AFTER APPLYING 19.30 DBRU THE AUTOTASK SQL TUNING ADVISOR GETS ORA-13602
38494116;Fix for Bug 38494116
39196236;DATAPUMP BUNDLE PATCH 19.31.0.0.0
38906621;OJVM RELEASE UPDATE: 19.31.0.0.260421 (38906621)
39034528;Database Release Update : 19.31.0.0.260421 (REL-APR2026) (39034528)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)

OPatch succeeded.

These are one-off patches, and I need to remove them as well before I can apply another RU.

39196236;DATAPUMP BUNDLE PATCH 19.31.0.0.0
38906621;OJVM RELEASE UPDATE: 19.31.0.0.260421 (38906621)

Which I did.

./OPatch/opatch nrollback -id 39196236,38906621

 

 

Why is it working now?

To be frank, I am surprised that it works.

To me, this wasn’t expected. I was under the impression that the one-off fixes in the MRP were made specifically for 19.31. But it seems to be that either opatch “exchanges” them silently since it recognizes that it has the same fixes in its package being part of 19.32. Or it skips them.

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
Oracle Interim Patch Installer version 12.2.0.1.52
Copyright (c) 2026, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle Home       : /u01/app/oracle/product/19
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/19/oraInst.loc
OPatch version    : 12.2.0.1.52
OUI version       : 12.2.0.7.0
Log file location : /u01/app/oracle/product/19/cfgtoollogs/opatch/opatch2026-08-29_18-04-39PM_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

Of course, I applied it.

It worked.

And don’t forget to start your databases and open your PDBs, and run datapatch.

Ok, I did check also what has happened to these patches from MRP3: They’ve been set “inactive”:

[Aug 29, 2026 6:26:55 PM] [INFO]    Sub-set patch [39293442] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [39052286] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [39598920] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [39594515] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [39575331] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [39576482] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [39429942] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [38937302] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [39498075] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [39060241] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [38494116] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [39661114] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [39034528] has become inactive due to the application of a super-set patch [39472050].
                                    Sub-set patch [39661105] has become inactive due to the application of a super-set patch [39472050].
                                    Please refer to Doc ID 2161861.1 for any possible further required actions.

 

 

Why is this still NOT working in most cases?

Is this the ultimate solution for the fanboys and fangirls of in-place-patching avoiding rollback actions?

Nope.

This will only work in the unlikely event of loss in cabin pr... sorry … in the unlikely event that you have nothing else installed except for the RU and the MRP.

How often does this happen? Not very often.

And again, as I explained multiple times, this would only matter if you patch in-place, and not when you follow our recommendation and always patch out-of-place. You still need to remove all other one-offs and bundles when you patch in-place to benefit from this option.

Or those of you who use Gold Images? It will likely fail as well since for instance the 19.31 Gold Image has MRP4 already included. And for MRP4 you can’t jump to 19.32.

 

Summary

In essence, it means:

When you have only an RU plus MRP1, MRP2 or MRP3, then you can apply the subsequent RU into the existing home without the need to remove the MRP. And only then …

What I didn’t try out is whether this will work with MRP6 and the RU 6 months later, for instance 19.30 with MRP6 trying to apply 19.32 on top. Maybe it does. But since I consider this a rare edge case, and since I do want you all to use out-of-place patching, I won’t spend time on it.

Patch out-of-place, and all is fine.

 

Further Links and Information

–Mike