Oracle Grid Infrastructure Release Update 23.26.3.0.0 is delivered through Patch 39568945. This release update is cumulative, meaning the latest Grid Infrastructure bundle includes the content from previous Grid Infrastructure bundle patches.
In this article, we walk through the process of applying Oracle Grid Infrastructure Release Update 23.26.3.0.0 to a two-node Oracle RAC environment using OPatchAuto.
The procedure is based on an actual RAC patching exercise performed on:
- rac-node1
- rac-node2
- Grid Infrastructure Home:
/u01/app/23.26.0.0/grid - Oracle Database Home:
/u01/app/oracle/product/23.26.0.0/dbhome_1 - GI/Database version: 23.0.0.0.0
- Patch: 39568945
- OPatchAuto log level:
FINEST
1. Patch Information
The patch being applied is:
Patch 39568945
Oracle Grid Infrastructure Release Update 23.26.3.0.0
Oracle identifies this as a Grid Infrastructure Release Update (GIRU) and states that GIRU patches are cumulative.
The release also contains the following CORE DST updates:
| Patch | Description |
|---|---|
| 36260493 | DSTV43 UPDATE – TZDATA2024A |
| 37537949 | DSTV44 UPDATE – TZDATA2025A |
| 39070269 | DSTV45 UPDATE – TZDATA2026A |
Oracle also documents this patch as Data Guard Standby-First Installable, which can be useful when planning maintenance for environments using physical standby databases.
2. RAC Environment Used for Testing
The RAC environment used for this patching exercise contained two nodes:
rac-node1
rac-node2
The relevant Oracle homes were:
GI Home
/u01/app/23.26.0.0/grid
Database Home
/u01/app/oracle/product/23.26.0.0/dbhome_1
The patch was staged under:
/u01/patch/39568945
The patch was applied using:
/u01/app/23.26.0.0/grid/OPatch/opatchauto apply \
/u01/patch/39568945 \
-logLevel FINEST
3. Before You Start: Backup
Before applying the patch, Oracle recommends taking a backup of the Oracle Home binaries and Central Inventory.
For a production RAC environment, I would also recommend having backups of:
- Grid Infrastructure Oracle Home
- Database Oracle Home
- OCR
- Database configuration
- SPFILE
- Important database data
- Existing patch inventory
A patching activity should never be started without a tested recovery or rollback plan.
4. Verify the OPatch Version
For Oracle RAC, Oracle recommends using the latest OPatch version appropriate for the release. The README for this patch specifically recommends OPatch 12.2.0.1.48 for the relevant environment.
Check the version:
$ORACLE_HOME/OPatch/opatch version
Example:
OPatch Version: 12.2.0.1.52
OPatch succeeded.
If the required OPatch version is not available, Oracle references Patch 6880880 for obtaining the OPatch utility.
5. Check the Existing Patch Inventory
Before applying the new GIRU, check the current Grid and Database homes.
For example:
$ORACLE_HOME/OPatch/opatch lspatches
Also verify the current Clusterware status:
crsctl stat res -t
Before proceeding, make sure that the RAC environment is healthy.
Check:
- CRS resources
- ASM
- Database instances
- SCAN listeners
- VIPs
- Database services
- Cluster interconnect
- Voting disks
- OCR
A patch should not be used as an opportunity to troubleshoot an already unhealthy cluster.
6. Perform the OPatch Conflict Check
One of the most important pre-patching steps is checking for conflicts with existing interim patches.
Oracle provides the following conflict-check commands for Patch 39568945.
For the Grid home:
$ORACLE_HOME/OPatch/opatch prereq \
CheckMinimumOPatchVersion \
-phBaseDir <UNZIPPED_PATCH_LOCATION>/39568945/39578879
Then:
$ORACLE_HOME/OPatch/opatch prereq \
CheckConflictAgainstOHWithDetail \
-phBaseDir <UNZIPPED_PATCH_LOCATION>/39568945/39578879
Additional conflict checks include:
$ORACLE_HOME/OPatch/opatch prereq \
CheckConflictAgainstOHWithDetail \
-phBaseDir <UNZIPPED_PATCH_LOCATION>/39568945/39578865
$ORACLE_HOME/OPatch/opatch prereq \
CheckConflictAgainstOHWithDetail \
-phBaseDir <UNZIPPED_PATCH_LOCATION>/39568945/39578862
$ORACLE_HOME/OPatch/opatch prereq \
CheckConflictAgainstOHWithDetail \
-phBaseDir <UNZIPPED_PATCH_LOCATION>/39568945/39578859
$ORACLE_HOME/OPatch/opatch prereq \
CheckConflictAgainstOHWithDetail \
-phBaseDir <UNZIPPED_PATCH_LOCATION>/39568945/39578856
These checks determine whether existing interim patches conflict with the new patch or whether an existing patch is a subset of the new patch.
If OPatch reports a real conflict with an already-installed patch, do not simply continue. Investigate the conflict and obtain the appropriate Oracle-supported resolution.
7. Understand the RAC Patching Approach
Oracle provides different installation procedures depending on the RAC configuration.
The README identifies, among others:
- RAC with non-shared Grid and Database homes and no ACFS
- RAC with non-shared Grid Home and shared Oracle Home, potentially using ACFS
- Single-instance homes not managed by Grid Infrastructure
For the common RAC configuration where Grid and Oracle homes are not shared and ACFS is not configured, Oracle’s procedure is to run:
# cd <UNZIPPED_PATCH_LOCATION>
# <GI_HOME>/OPatch/opatchauto apply \
<UNZIPPED_PATCH_LOCATION>/39568945 \
-logLevel FINEST
on each cluster node.
In practice, this allows OPatchAuto to coordinate the patching of the Grid Infrastructure and RAC Database homes.
8. Apply Patch 39568945 on RAC Node 1
On rac-node1, the patch was started using:
/u01/app/23.26.0.0/grid/OPatch/opatchauto apply \
/home/oracle/install/39568945/ \
-logLevel FINEST
The OPatchAuto session started at:
/u01/app/23.26.0.0/grid/OPatch/opatchauto apply /home/oracle/install/39568945/ -logLevel FINEST
OPatchauto session is initiated at Mon Aug 10 12:44:37 2026
System initialization log file is /u01/app/23.26.0.0/grid/cfgtoollogs/opatchautodb/systemconfig2026-08-10_12-44-48PM.log.
Session log file is /u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/opatchauto2026-08-10_12-45-26PM.log
The id for this session is 3PP8
Executing OPatch prereq operations to verify patch applicability on home /u01/app/23.26.0.0/grid
/u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/opatchauto2026-08-10_12-45-26PM.log
Patch applicability verified successfully on home /u01/app/23.26.0.0/grid
Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Patch applicability verified successfully on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Executing patch validation checks on home /u01/app/23.26.0.0/grid
Patch validation checks successfully completed on home /u01/app/23.26.0.0/grid
Executing patch validation checks on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Patch validation checks successfully completed on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Updating OJVM libraries on all hosts for home /u01/app/oracle/product/23.26.0.0/dbhome_1
Successfully updated OJVM libraries on all hosts
Enabling two-stage patches on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Successfully enabled two-stage patches on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Verifying SQL patch applicability on home /u01/app/oracle/product/23.26.0.0/dbhome_1
SQL patch applicability verified successfully on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Preparing to bring down database service on home /u01/app/oracle/product/23.26.0.0/dbhome_1
No step execution required.........
Performing prepatch operations on CRS - bringing down CRS service on home /u01/app/23.26.0.0/grid
Prepatch operation log file location: /u01/app/grid/crsdata/rac-node1/crsconfig/crs_prepatch_apply_inplace_rac-node1_2026-08-10_12-51-41AM.log
CRS service brought down successfully on home /u01/app/23.26.0.0/grid
Performing prepatch operation on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Prepatch operation completed successfully on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Start applying binary patch on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Binary patch applied successfully on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Running rootadd_rdbms.sh on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Successfully executed rootadd_rdbms.sh on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Performing postpatch operation on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Postpatch operation completed successfully on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Start applying binary patch on home /u01/app/23.26.0.0/grid
Binary patch applied successfully on home /u01/app/23.26.0.0/grid
Running rootadd_rdbms.sh on home /u01/app/23.26.0.0/grid
Successfully executed rootadd_rdbms.sh on home /u01/app/23.26.0.0/grid
Checking shared status of home.....
Performing postpatch operations on CRS - starting CRS service on home /u01/app/23.26.0.0/grid
Postpatch operation log file location: /u01/app/grid/crsdata/rac-node1/crsconfig/crs_postpatch_apply_inplace_rac-node1_2026-08-10_01-45-01PM.log
CRS service started successfully on home /u01/app/23.26.0.0/grid
Preparing home /u01/app/oracle/product/23.26.0.0/dbhome_1 after database service restarted
No step execution required.........
Trying to apply SQL patch on home /u01/app/oracle/product/23.26.0.0/dbhome_1
No SQL patch operations are required on local node for this home
OPatchAuto successful.
--------------------------------Summary--------------------------------
Patching is completed successfully. Please find the summary as follows:
Host:rac-node1
RAC Home:/u01/app/oracle/product/23.26.0.0/dbhome_1
Version:23.0.0.0.0
Summary:
==Following patches were SKIPPED:
Patch: /home/oracle/install/39568945/39578865
Reason: This patch is not applicable to this specified target type - "rac_database"
Patch: /home/oracle/install/39568945/39578862
Reason: This patch is not applicable to this specified target type - "rac_database"
Patch: /home/oracle/install/39568945/39578856
Reason: This patch is not applicable to this specified target type - "rac_database"
==Following patches were SUCCESSFULLY applied:
Patch: /home/oracle/install/39568945/39578859
Log: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_12-55-53PM_1.log
Patch: /home/oracle/install/39568945/39578879
Log: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_12-55-53PM_1.log
Host:rac-node1
CRS Home:/u01/app/23.26.0.0/grid
Version:23.0.0.0.0
Summary:
==Following patches were SUCCESSFULLY applied:
Patch: /home/oracle/install/39568945/39578856
Log: /u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_13-31-15PM_1.log
Patch: /home/oracle/install/39568945/39578859
Log: /u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_13-31-15PM_1.log
Patch: /home/oracle/install/39568945/39578862
Log: /u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_13-31-15PM_1.log
Patch: /home/oracle/install/39568945/39578865
Log: /u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_13-31-15PM_1.log
Patch: /home/oracle/install/39568945/39578879
Log: /u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_13-31-15PM_1.log
Patching session reported following warning(s):
_________________________________________________
[WARNING] The database instance 'test' from '/u01/app/oracle/product/23.26.0.0/dbhome_1', in host'rac-node1' is not running. SQL changes, if any, will not be applied.
To apply. the SQL changes, bring up the database instance and run the command manually from any one node (run as oracle).
Refer to the readme to get the correct steps for applying the sql changes.
Following homes are skipped during patching as patches are not applicable:
/u01/app/oracle/product/19.0.0/dbhome_1
OPatchauto session completed at Mon Aug 10 13:51:32 2026
Time taken to complete the session 20 minutes, 51 seconds
[root@rac-node1 39568945]#
9. OPatchAuto Patching Sequence
The patching process then moved through the normal OPatchAuto stages.
For the Database Home:
Updating OJVM libraries
Enabling two-stage patches
Verifying SQL patch applicability
Prepatch operations
Binary patch
rootadd_rdbms.sh
Postpatch operations
The database binary patch completed successfully.
The Grid Infrastructure Home was then patched:
Binary patch applied successfully
followed by:
rootadd_rdbms.sh
and the CRS postpatch operation.
The CRS service was successfully restarted.
10. Apply the Patch on RAC Node 2
The patch was subsequently executed on rac-node2:
/u01/app/23.26.0.0/grid/OPatch/opatchauto apply \
/u01/patch/39568945 \
-logLevel FINEST
The second OPatchAuto session started at:
/u01/app/23.26.0.0/grid/OPatch/opatchauto apply /u01/patch/39568945 -logLevel FINEST
OPatchauto session is initiated at Mon Aug 10 14:43:17 2026
System initialization log file is /u01/app/23.26.0.0/grid/cfgtoollogs/opatchautodb/systemconfig2026-08-10_02-43-28PM.log.
Following home(s) will not be included as part of current opatchauto session as they do not run from the current host.
Database Name: db
Oracle Home: /u01/app/oracle/product/19.0.0/dbhome_1
Host:
rac-node1
Database Name: sample
Oracle Home: /u01/app/oracle/product/19.0.0/dbhome_1
Host:
rac-node1
To complete the patching process for the above databases, execute it on host where the databases are running.
Session log file is /u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/opatchauto2026-08-10_02-44-11PM.log
The id for this session is VG15
Executing OPatch prereq operations to verify patch applicability on home /u01/app/23.26.0.0/grid
Patch applicability verified successfully on home /u01/app/23.26.0.0/grid
Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Patch applicability verified successfully on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Executing patch validation checks on home /u01/app/23.26.0.0/grid
Patch validation checks successfully completed on home /u01/app/23.26.0.0/grid
Executing patch validation checks on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Patch validation checks successfully completed on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Enabling two-stage patches on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Successfully enabled two-stage patches on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Verifying SQL patch applicability on home /u01/app/oracle/product/23.26.0.0/dbhome_1
SQL patch applicability verified successfully on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Preparing to bring down database service on home /u01/app/oracle/product/23.26.0.0/dbhome_1
No step execution required.........
Performing prepatch operations on CRS - bringing down CRS service on home /u01/app/23.26.0.0/grid
Prepatch operation log file location: /u01/app/grid/crsdata/rac-node2/crsconfig/crs_prepatch_apply_inplace_rac-node2_2026-08-10_02-49-50PM.log
CRS service brought down successfully on home /u01/app/23.26.0.0/grid
Performing prepatch operation on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Prepatch operation completed successfully on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Start applying binary patch on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Binary patch applied successfully on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Running rootadd_rdbms.sh on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Successfully executed rootadd_rdbms.sh on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Performing postpatch operation on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Postpatch operation completed successfully on home /u01/app/oracle/product/23.26.0.0/dbhome_1
Start applying binary patch on home /u01/app/23.26.0.0/grid
Binary patch applied successfully on home /u01/app/23.26.0.0/grid
Running rootadd_rdbms.sh on home /u01/app/23.26.0.0/grid
Successfully executed rootadd_rdbms.sh on home /u01/app/23.26.0.0/grid
Performing postpatch operations on CRS - starting CRS service on home /u01/app/23.26.0.0/grid
Postpatch operation log file location: /u01/app/grid/crsdata/rac-node2/crsconfig/crs_postpatch_apply_inplace_rac-node2_2026-08-10_03-23-27PM.log
CRS service started successfully on home /u01/app/23.26.0.0/grid
Preparing home /u01/app/oracle/product/23.26.0.0/dbhome_1 after database service restarted
No step execution required.........
Trying to apply SQL patch on home /u01/app/oracle/product/23.26.0.0/dbhome_1
"[/bin/sh -c 'cd /u01/app/oracle/product/23.26.0.0/dbhome_1;ORACLE_HOME=/u01/app/oracle/product/23.26.0.0/dbhome_1 ORACLE_SID=orcl2 /u01/app/oracle/product/23.26.0.0/dbhome_1/OPatch/datapatch -verbose']" command failed with errors. Please refer to logs for more details. SQL changes, if any, can be applied by manually retrying the same command.
SQL patch applied successfully on home /u01/app/oracle/product/23.26.0.0/dbhome_1
OPatchAuto successful.
--------------------------------Summary--------------------------------
Patching is completed successfully. Please find the summary as follows:
Host:rac-node2
RAC Home:/u01/app/oracle/product/23.26.0.0/dbhome_1
Version:23.0.0.0.0
Summary:
==Following patches were SKIPPED:
Patch: /u01/patch/39568945/39578865
Reason: This patch is not applicable to this specified target type - "rac_database"
Patch: /u01/patch/39568945/39578862
Reason: This patch is not applicable to this specified target type - "rac_database"
Patch: /u01/patch/39568945/39578856
Reason: This patch is not applicable to this specified target type - "rac_database"
==Following patches were SUCCESSFULLY applied:
Patch: /u01/patch/39568945/39578859
Log: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_14-52-10PM_1.log
Patch: /u01/patch/39568945/39578879
Log: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_14-52-10PM_1.log
Host:rac-node2
CRS Home:/u01/app/23.26.0.0/grid
Version:23.0.0.0.0
Summary:
==Following patches were SUCCESSFULLY applied:
Patch: /u01/patch/39568945/39578856
Log: /u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_15-13-01PM_1.log
Patch: /u01/patch/39568945/39578859
Log: /u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_15-13-01PM_1.log
Patch: /u01/patch/39568945/39578862
Log: /u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_15-13-01PM_1.log
Patch: /u01/patch/39568945/39578865
Log: /u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_15-13-01PM_1.log
Patch: /u01/patch/39568945/39578879
Log: /u01/app/23.26.0.0/grid/cfgtoollogs/opatchauto/core/opatch/opatch2026-08-10_15-13-01PM_1.log
OPatchauto session completed at Mon Aug 10 15:31:50 2026
Time taken to complete the session 48 minutes, 23 seconds
11. Patching the CRS Home on Node 2
The CRS service was brought down as part of the prepatch operation:
CRS service brought down successfully
The Grid Infrastructure binary patch was then applied successfully.
The required rootadd_rdbms.sh operation completed successfully, followed by the CRS postpatch operation.
Finally:
CRS service started successfully
This confirms that the Clusterware stack was successfully restarted after the Grid patching phase.
12. One Interesting Point: Multiple Oracle Homes
The environment also contained an older Oracle Database Home:
/u01/app/oracle/product/19.0.0/dbhome_1
OPatchAuto identified that this home was not applicable to the 23.26.3.0.0 patch and skipped it.
The output showed:
Following homes are skipped during patching as patches are not applicable:
/u01/app/oracle/product/19.0.0/dbhome_1
On Node 2, OPatchAuto also reported databases associated with that Oracle Home that were not running from the current host and instructed the administrator to execute patching on the host where those databases were running.
This is particularly important in RAC environments containing multiple database releases.
Do not assume that running OPatchAuto for the 23ai Grid Home automatically patches every Oracle Database Home installed on the server.
Always review the OPatchAuto summary.
13. Run Datapatch Sanity Checks
Before applying the SQL patches, run:
cd /u01/app/oracle/product/23.26.0.0/dbhome_1
./datapatch -sanity_checks
The tool detected the RAC environment and verified SSH connectivity:
./datapatch -sanity_checks
SQL Patching sanity checks version 23.26.3.0.0 on Tue 11 Aug 2026 07:58:45 AM +0530
Copyright (c) 2021, 2026, Oracle. All rights reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20260811_075845_2069938/sanity_checks_20260811_075845_2069938.log
RAC detected, verifying SSH connection...
Done
Running checks
JSON report generated in /u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20260811_075845_2069938/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: Looping Chain Synonyms - 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 'PURGccording 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_20260811_075845_2069938/sanity_checks_debug_20260811_075845_2069938.log
SQL Patching sanity checks completed on Tue 11 Aug 2026 08:01:05 AM +0530
14. Run Datapatch
fter completing the sanity checks, run:
./datapatch -verbose
The SQL Patching tool reported:
SQL Patching tool version 23.26.3.0.0
The database connection was successful:
./datapatch -verbose
SQL Patching tool version 23.26.3.0.0 Production on Tue Aug 11 08:01:22 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_08_11_08_01_22_pid_2071323/sqlpatch_i
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.3.0.0 Release_Update 260705162604: Installed
PDB CDB$ROOT:
Applied 23.26.2.0.0 Release_Update 260428181725 successfully on 01-JUN-26 05.22.01.073474 PM
PDB ORCLPDB1:
Applied 23.26.2.0.0 Release_Update 260428181725 successfully on 01-JUN-26 05.30.37.566386 PM
PDB PDB$SEED:
Applied 23.26.2.0.0 Release_Update 260428181725 successfully on 01-JUN-26 05.30.10.688675 PM
PDB SOURCE_DB:
Applied 23.26.2.0.0 Release_Update 260428181725 successfully on 01-JUN-26 05.30.10.688675 PM
PDB STAGING_DB:
Applied 23.26.2.0.0 Release_Update 260428181725 successfully on 01-JUN-26 05.30.10.688675 PM
Adding patches to installation queue and performing prereq checks...done
Installation queue:
For the following PDBs: CDB$ROOT PDB$SEED ORCLPDB1 SOURCE_DB STAGING_DB
No interim patches need to be rolled back
Patch 39578879 (Database Release Update : 23.26.3.0.0 (39578879)):
Apply from 23.26.2.0.0 Release_Update 260428181725 to 23.26.3.0.0 Release_Update 260705162604
No interim patches need to be applied
Installing patches...
Patch installation complete. Total patches installed: 5
Validating logfiles...done
Patch 39578879 apply (pdb CDB$ROOT): SUCCESS
logfile: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/sqlpatch/sqlpatch_sid_orcl1_ts_2026_08_11_08_01_22_pid_2071323/39578879_apply_ORCL_CDBROOT_2
Patch 39578879 apply (pdb PDB$SEED): SUCCESS
logfile: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/sqlpatch/sqlpatch_sid_orcl1_ts_2026_08_11_08_01_22_pid_2071323/39578879_apply_ORCL_PDBSEED_2
Patch 39578879 apply (pdb ORCLPDB1): SUCCESS
logfile: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/sqlpatch/sqlpatch_sid_orcl1_ts_2026_08_11_08_01_22_pid_2071323/39578879_apply_ORCL_ORCLPDB1_
Patch 39578879 apply (pdb SOURCE_DB): SUCCESS
logfile: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/sqlpatch/sqlpatch_sid_orcl1_ts_2026_08_11_08_01_22_pid_2071323/39578879_apply_ORCL_SOURCE_DB
Patch 39578879 apply (pdb STAGING_DB): SUCCESS
logfile: /u01/app/oracle/product/23.26.0.0/dbhome_1/cfgtoollogs/sqlpatch/sqlpatch_sid_orcl1_ts_2026_08_11_08_01_22_pid_2071323/39578879_apply_ORCL_STAGING_D
SQL Patching tool complete on Tue Aug 11 08:35:21 2026
15. Verify the Patch Installation
After patching both RAC nodes, verify the Grid Infrastructure patch inventory.
Run:
$GI_HOME/OPatch/opatch lspatches
You should verify that the expected 23.26.3.0.0 components are present.
Also verify the Database Home:
$ORACLE_HOME/OPatch/opatch lspatches
Check the installed patch inventory on both RAC nodes.
16. Verify Clusterware
After patching:
crsctl check crs
Then:
crsctl stat res -t
Check that:
- CRS is online
- ASM is online
- Database instances are online
- VIP resources are online
- SCAN listeners are online
- Database services are online
- All expected resources are ONLINE
crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE rac-node1 STABLE
ONLINE ONLINE rac-node2 STABLE
ora.chad
ONLINE ONLINE rac-node1 STABLE
ONLINE ONLINE rac-node2 STABLE
ora.cvuadmin
OFFLINE OFFLINE rac-node1 STABLE
OFFLINE OFFLINE rac-node2 STABLE
ora.helper
OFFLINE OFFLINE rac-node1 STABLE
OFFLINE OFFLINE rac-node2 IDLE,STABLE
ora.net1.network
ONLINE ONLINE rac-node1 STABLE
ONLINE ONLINE rac-node2 STABLE
ora.ons
ONLINE ONLINE rac-node1 STABLE
ONLINE ONLINE rac-node2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE rac-node1 STABLE
2 ONLINE ONLINE rac-node2 STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE rac-node1 STABLE
2 ONLINE ONLINE rac-node2 STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE OFFLINE STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE rac-node1 Started,STABLE
2 ONLINE ONLINE rac-node2 Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE rac-node1 STABLE
2 ONLINE ONLINE rac-node2 STABLE
ora.cdp1.cdp
1 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE rac-node1 STABLE
ora.cvuhelper
1 OFFLINE OFFLINE STABLE
ora.db.db
1 ONLINE OFFLINE STABLE
ora.orcl.db
1 ONLINE ONLINE rac-node1 Open,HOME=/u01/app/o
racle/product/23.26.
0.0/dbhome_1,STABLE
2 ONLINE ONLINE rac-node2 Open,HOME=/u01/app/o
racle/product/23.26.
0.0/dbhome_1,STABLE
ora.orcl.orcl_orclpdb1.svc
2 ONLINE ONLINE rac-node1 STABLE
3 ONLINE ONLINE rac-node2 STABLE
ora.orcl.orcl_source_db.svc
1 ONLINE ONLINE rac-node2 STABLE
2 ONLINE ONLINE rac-node1 STABLE
ora.orcl.orcl_staging_db.svc
1 ONLINE ONLINE rac-node2 STABLE
2 ONLINE ONLINE rac-node1 STABLE
ora.orcl.orclpdb1.pdb
1 ONLINE ONLINE rac-node1 READ WRITE,STABLE
3 ONLINE ONLINE rac-node2 READ WRITE,STABLE
ora.orcl.source_db.pdb
1 ONLINE ONLINE rac-node1 READ WRITE,STABLE
2 ONLINE ONLINE rac-node2 READ WRITE,STABLE
ora.orcl.staging_db.pdb
1 ONLINE ONLINE rac-node1 READ WRITE,STABLE
2 ONLINE ONLINE rac-node2 READ WRITE,STABLE
ora.rac-node1.vip
1 ONLINE ONLINE rac-node1 STABLE
ora.rac-node2.vip
1 ONLINE ONLINE rac-node2 STABLE
ora.rhpserver
1 OFFLINE OFFLINE STABLE
ora.scan1.vip
1 ONLINE OFFLINE STABLE
ora.test.db
1 ONLINE OFFLINE STABLE
ora.test.salse_pdb.pdb
1 OFFLINE OFFLINE STABLE
ora.test.testpdb.pdb
1 OFFLINE OFFLINE STABLE
--------------------------------------------------------------------------------
For a two-node RAC environment, verify both nodes individually.
17. Verify Database SQL Patch Status
The binary installation and SQL patching are separate aspects of an Oracle patch.
After the database is available, verify SQL patch registration using:
SELECT patch_id,
patch_type,
action_time,
description,
status
FROM dba_registry_sqlpatch
ORDER BY action_time DESC;
Look for the appropriate Release Update entry and confirm:
STATUS = SUCCESS
If a database was down during OPatchAuto, this verification is especially important.
18. Check for Invalid Objects
After patching, check invalid objects:
SELECT owner,
object_type,
COUNT(*)
FROM dba_objects
WHERE status = 'INVALID'
GROUP BY owner, object_type
ORDER BY owner, object_type;
If required, Oracle’s standard recompilation script can be used:
@?/rdbms/admin/utlrp.sql
19. RAC Post-Patching Health Checks
Once the patch is complete, perform a complete RAC health check.
Useful checks include:
crsctl check crs
crsctl stat res -t
olsnodes -n
srvctl status database -d <db_unique_name>
srvctl status service -d <db_unique_name>
From SQL*Plus, verify the database:
SELECT instance_name,
host_name,
version,
status
FROM gv$instance
ORDER BY instance_number;
Also check:
SELECT inst_id,
name,
open_mode
FROM gv$pdbs
ORDER BY inst_id, con_id;
20. Lessons Learned from the Actual Patching Exercise
This patching exercise highlights several practical lessons.
1. Always check patch applicability first
OPatchAuto performed applicability and validation checks successfully on both homes before modifying the environment.
2. Do not ignore SKIPPED patches
The output showed several patches as:
not applicable to this specified target type - "rac_database"
That was expected because those components were applied to the Grid Infrastructure Home rather than the RAC Database target.
3. Check SQL patching separately
Node 1 demonstrated that a database being down can prevent SQL changes from being applied.
4. Read the complete OPatchAuto summary
The final summary gives a clear picture of:
- Successful patches
- Skipped patches
- Warnings
- Database homes not included
- SQL patching status
5. Patch every RAC node
Completing the patch on one node does not complete the RAC maintenance activity.
In this exercise, both:
rac-node1
rac-node2
were patched successfully.
21. Recommended RAC Patching Checklist
Before patching:
[ ] Confirm patch number: 39568945
[ ] Read the current README
[ ] Check supported configuration
[ ] Verify OPatch version
[ ] Check CRS health
[ ] Check database health
[ ] Check existing patch inventory
[ ] Perform conflict checks
[ ] Backup Oracle Homes
[ ] Backup OCR/SPFILE/database as required
[ ] Confirm rollback/recovery plan
During patching:
[ ] Patch node 1
[ ] Monitor OPatchAuto logs
[ ] Verify CRS restart
[ ] Review patch summary
[ ] Check SQL patch status
[ ] Patch node 2
[ ] Review node 2 patch summary
[ ] Check SQL patch status
After patching:
[ ] Verify opatch lspatches
[ ] Verify CRS
[ ] Verify ASM
[ ] Verify RAC instances
[ ] Verify VIP/SCAN
[ ] Verify database services
[ ] Verify DBA_REGISTRY_SQLPATCH
[ ] Check invalid objects
[ ] Perform application validation
[ ] Review OPatchAuto logs
Final Thoughts
Oracle Grid Infrastructure Release Update 23.26.3.0.0 (Patch 39568945) can be applied to an Oracle RAC environment using OPatchAuto.
The most important part of the process is not simply executing:
opatchauto apply
The real work is the preparation and validation around it.
Before patching, perform conflict checks, verify the RAC health, maintain current backups, and confirm the correct OPatch version. During patching, monitor the OPatchAuto session carefully. After patching, verify both the binary patch inventory and the database SQL patch status.
In the two-node RAC exercise described here, both rac-node1 and rac-node2 completed the Grid Infrastructure patch successfully. The detailed logs also demonstrated why SQL patch status and OPatchAuto warnings must be reviewed separately rather than assuming that a final “OPatchAuto successful” message means every database-related task was completed.
Oracle’s README for Patch 39568945 should remain the authoritative installation reference, particularly for environment-specific configurations, known issues, and any changes to the installation procedure.




