Oracle continues to release Monthly Recommended Patches (MRPs) for Oracle Database 23ai, helping organizations address critical bug fixes and stability improvements between quarterly Release Updates (RUs).
In this article, we’ll walk through the application of Patch 39345754 (Database MRP 23.26.2.0.0 – May 2026) on a two-node Oracle RAC environment running Database RU 23.26.2.0.0.

Why This MRP Matters for Security
Oracle’s May 2026 patching cycle places significant emphasis on security hardening across supported products. Alongside the release of Database MRP 23.26.2.0.0, Oracle published its Critical Security Patch Update (CSPU) Advisory – May 2026.
A Critical Security Patch Update (CSPU) delivers targeted, high-priority security fixes in a smaller and more focused package, allowing organizations to address critical vulnerabilities with minimal operational disruption. CSPUs complement Oracle’s quarterly Critical Patch Updates (CPUs) and help customers stay protected between major patch cycles.
The May 2026 CSPU introduces 35 new security patches across multiple Oracle product families. These updates address vulnerabilities found in both Oracle-developed code and third-party components bundled within Oracle products.
Oracle continues to report instances where attackers successfully exploit vulnerabilities that already have available fixes. In many cases, the affected environments had not applied previously released security patches. As a result, Oracle strongly recommends that customers:
- Remain on actively supported Oracle versions.
- Apply Release Updates (RUs) and Monthly Recommended Patches (MRPs) regularly.
- Deploy Critical Security Patch Updates without delay.
- Review Oracle security advisories and patch documentation as part of their standard maintenance process.
For Oracle Database administrators, applying Patch 39345754 is not only about improving stability and fixing post-RU issues—it also aligns with Oracle’s ongoing security recommendations and proactive vulnerability management strategy.
Environment Details
Before applying the MRP, verify the existing patch level.
Check OPatch Version
$ cd $ORACLE_HOME/OPatch
$ ./opatch version
Output:
OPatch Version: 12.2.0.1.51
Verify Existing Patches
$ ./opatch lspatches
Output:
39093738;OCW RELEASE UPDATE 23.26.2.0.0
39093711;Database Release Update : 23.26.2.0.0
The environment is already running the May 2026 Release Update.
Verify Cluster Status
Before patching, ensure all cluster resources are healthy.
crsctl stat res -t
Confirm that:
- ASM instances are online
- Database instances are open
- Listeners are healthy
- VIPs and SCAN listeners are functioning correctly
This validation helps avoid unexpected failures during patch application.
Step 1 – Stop CRS on the Local Node
Since this is a RAC environment, perform a rolling patching approach.
On the node being patched:
crsctl stop crs
Expected output includes successful shutdown of:
- Database instances
- ASM
- VIP resources
- Listeners
- Cluster services
Example:
CRS-4133: Oracle High Availability Services has been stopped.
Once CRS is stopped successfully, proceed with patch validation.
Step 2 – Verify Patch Conflicts
Before applying any interim patch, always perform a conflict check.
$ ./opatch prereq CheckConflictAgainstOHWithDetail \
-ph /u01/patch/39345754/
Output:
./opatch prereq CheckConflictAgainstOHWithDetail -ph /u01/patch/39345754/
Oracle Interim Patch Installer version 12.2.0.1.51
Copyright (c) 2026, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /u01/app/oracle/product/23.26.0.0/dbhome_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/23.26.0.0/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.51
OUI version : 12.2.0.9.0
Log file location : /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/opatch/opatch2026-06-01_16-46-04PM_1.log
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.
A successful conflict check confirms that the patch can be safely applied to the current Oracle Home.
Step 3 – Apply Patch 39345754
Apply the patch using OPatch.
$ ./opatch napply /u01/patch/39345754/
During execution, OPatch identifies and applies the included patch:
39421943
Proceed when prompted:
Do you want to proceed? [y|n]
Enter:
y
When prompted to confirm Oracle instances are down:
Is the local system ready for patching? [y|n]
Enter:
y
Patch application output:
Applying interim patch '39421943'
Successful completion:
./opatch napply /u01/patch/39345754/
Oracle Interim Patch Installer version 12.2.0.1.51
Copyright (c) 2026, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/23.26.0.0/dbhome_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/23.26.0.0/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.51
OUI version : 12.2.0.9.0
Log file location : /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/opatch/opatch2026-06-01_16-47-21PM_1.log
Verifying environment and performing prerequisite checks...
OPatch continues with these patches: 39421943
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/23.26.0.0/dbhome_1')
Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...
Applying interim patch '39421943' to OH '/u01/app/oracle/product/23.26.0.0/dbhome_1'
Patching component oracle.crypto.rsf, 23.0.0.0.0...
Patch 39421943 successfully applied.
Log file location: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/opatch/opatch2026-06-01_16-47-21PM_1.log
OPatch succeeded.
.
Step 4 – Verify Installed Patches
After patching, confirm the new patch inventory.
$ ./opatch lspatches
Output:
39421943;MERGE ON DATABASE RU 23.26.2.0.0 OF 39291028 39291038 39395452
39093738;OCW RELEASE UPDATE 23.26.2.0.0
39093711;Database Release Update : 23.26.2.0.0
The successful appearance of patch 39421943 confirms that MRP 39345754 has been installed correctly.
Understanding What Was Installed
Patch 39345754 is delivered as a Monthly Recommended Patch bundle for Oracle Database 23ai RU 23.26.2.0.0.
The patch introduces merge patch:
39421943
which contains fixes from:
- 39291028
- 39291038
- 39395452
These fixes address issues discovered after the release of RU 23.26.2.0.0 and provide enhanced stability without waiting for the next quarterly RU cycle.
Post-Patching Activities
After patching each RAC node:
Start CRS
crsctl start crs
Verify Cluster Health
crsctl stat res -t
Validate Database Services
srvctl status database -d orcl
Run Datapatch
If the MRP contains SQL changes, execute:
$ORACLE_HOME/OPatch/datapatch -sanity_checks
SQL Patching sanity checks version 23.26.2.0.0 on Mon 01 Jun 2026 04:56:33 PM +0530
Copyright (c) 2021, 2026, Oracle. All rights reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20260601_165633_170285/sanity_checks_20260601_165633_170285.log
RAC detected, verifying SSH connection...
Done
Running checks
JSON report generated in /u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20260601_165633_170285/sqlpatch_sanity_checks_summary.json file
Checks completed. Printing report:
Check: Database component status - OK
Check: PDB Violations - OK
Check: Invalid System Objects - OK
Check: Tablespace Status - OK
Check: Backup jobs - OK
Check: Temp file exists - OK
Check: Temp file online - OK
Check: Data Pump running - OK
Check: Container status - OK
Check: Oracle Database Keystore - OK
Check: Dictionary statistics gathering - WARNING
Patching the database without recent data dictionary statistics gathered may lead to performance issues.
Data dictionary statistics are older than 7 days.
Run the following queries to start gathering the dictionary statistics:
EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
EXEC DBMS_SYSTEM.GATHER_FIXED_OBJECTS_STATS;
Refer to MOS 457926.1 for more details.
PDB$SEED:
| LATEST | OPERATION | STATUS |
|-----------------+-------------------------+-----------|
| 30-JAN-26 16:26 | gather_dictionary_stats | COMPLETED |
|-----------------+-------------------------+-----------|
Check: Scheduled Jobs - OK
Check: GoldenGate triggers - OK
Check: GoldenGate Integrated Extract/Replicat - OK
Check: Logminer DDL triggers - OK
Check: Check sys public grants - OK
Check: Statistics gathering running - OK
Check: Optim dictionary upgrade parameter - OK
Check: Symlinks on oracle home path - OK
Check: Java Virtual Machine Enable - OK
Check: Oracle Database Vault Enabled - OK
Check: Duplicated ORACLE_HOME values - OK
Check: Recyclebin Empty - WARNING
Datapatch could fail when unpurged objects remain in the recycle bin.
No objects should be found in the recycle bin.
Empty the recyclebin by running 'PURGE RECYCLEBIN'. For more information about purging the recyclebin please visit Oracle Help Center, then search for 'PURGE - SQL Language Reference' and choose results according to your database version.
ORCLPDB1:
| RECYCLEBIN_OBJ_COUNT |
|----------------------|
| 12 |
|----------------------|
Check: Central Inventory - OK
Check: Queryable Inventory locks - OK
Check: Queryable Inventory database directories - OK
Check: Queryable Inventory external table - OK
Check: Queryable Inventory package - OK
Check: Imperva processes - OK
Check: Guardium processes - OK
Check: Locale - OK
Refer to MOS Note 2975965.1 and debug log
/u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20260601_165633_170285/sanity_checks_debug_20260601_165633_170285.log
SQL Patching sanity checks completed on Mon 01 Jun 2026 04:59:32 PM +0530
$ORACLE_HOME/OPatch/datapatch -verbose
SQL Patching tool version 23.26.2.0.0 Production on Mon Jun 1 17:07:24 2026
Copyright (c) 2012, 2026, Oracle. All rights reserved.
Log file for this invocation: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/sqlpatch/sqlpatch_sid_orcl1_ts_2026_06_01_17_07_24_pid_174055/sqlpatch_invocation.log
Connecting to database...OK
Gathering database info...done
Note: Datapatch will only apply or rollback SQL fixes for PDBs
that are in an open state, no patches will be applied to closed PDBs.
Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
(Doc ID 1585822.1)
Bootstrapping registry and package to current versions...done
Determining current state...done
Current state of interim SQL patches:
No interim patches found
Current state of release update SQL patches:
Binary registry:
23.26.2.0.0 Release_Update 260428181725: Installed
PDB CDB$ROOT:
Applied 23.26.1.0.0 Release_Update 260117080636 successfully on 30-JAN-26 04.23.32.253690 PM
PDB ORCLPDB1:
Applied 23.26.1.0.0 Release_Update 260117080636 successfully on 30-JAN-26 04.23.32.606295 PM
PDB PDB$SEED:
Applied 23.26.1.0.0 Release_Update 260117080636 successfully on 30-JAN-26 04.23.32.606295 PM
Adding patches to installation queue and performing prereq checks...done
Installation queue:
For the following PDBs: CDB$ROOT PDB$SEED ORCLPDB1
No interim patches need to be rolled back
Patch 39093711 (Database Release Update : 23.26.2.0.0 (39093711)):
Apply from 23.26.1.0.0 Release_Update 260117080636 to 23.26.2.0.0 Release_Update 260428181725
No interim patches need to be applied
Installing patches...
Patch installation complete. Total patches installed: 3
Validating logfiles...done
Patch 39093711 apply (pdb CDB$ROOT): SUCCESS
logfile: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/sqlpatch/sqlpatch_sid_orcl1_ts_2026_06_01_17_07_24_pid_174055/39093711_apply_ORCL_CDBROOT_2026Jun01_17_09_27.log (no errors)
Patch 39093711 apply (pdb PDB$SEED): SUCCESS
logfile: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/sqlpatch/sqlpatch_sid_orcl1_ts_2026_06_01_17_07_24_pid_174055/39093711_apply_ORCL_PDBSEED_2026Jun01_17_23_59.log (no errors)
Patch 39093711 apply (pdb ORCLPDB1): SUCCESS
logfile: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/sqlpatch/sqlpatch_sid_orcl1_ts_2026_06_01_17_07_24_pid_174055/39093711_apply_ORCL_ORCLPDB1_2026Jun01_17_24_00.log (no errors)
SQL Patching tool complete on Mon Jun 1 17:32:38 2026
Verify datapatch completion without errors.
Best Practices for Applying Oracle MRPs
1. Always Perform Conflict Checks
opatch prereq CheckConflictAgainstOHWithDetail
before patch application.
2. Maintain Current OPatch Version
Use the latest OPatch version recommended for your RU level.
3. Patch One RAC Node at a Time
Rolling patching minimizes downtime and maintains service availability.
4. Verify CRS Health Before and After Patching
Never assume cluster resources are healthy.
5. Take Backups
Before patching:
- Oracle Home backup
- SPFILE backup
- OCR backup
- Database backup
Conclusion
Applying Patch 39345754 (Database MRP 23.26.2.0.0 – May 2026) provides both operational stability improvements and important security-related fixes. With Oracle releasing 35 new security patches as part of its May 2026 Critical Security Patch Update program, organizations should prioritize timely patch deployment to reduce exposure to known vulnerabilities while maintaining supportability and database reliability.




