Patching Oracle RAC to 23.26.3 with OPatchAuto — Prerequisite Checks, Home Discovery, Apply, Rollback & Datapatch Verification (Full Walkthrough)

 ORACLE DATABASE ADMINISTRATION

Patching Oracle Grid Infrastructure and Database to Release 23.26.3 with OPatchAuto

Munish Kumar Karna

Senior Database Solution Architect | Oracle Certified Professional | RAC · ASM · Data Guard · GoldenGate · OCI

Overview

This walkthrough documents an end-to-end Release Update of a 2-node Oracle RAC environment (Grid Infrastructure and Database homes) from 23.26.2 to 23.26.3, applied using OPatchAuto — Oracle's automated, orchestrated patching utility for Oracle Home environments. Alongside the patch apply itself, this write-up also covers three things that are often skipped in patching notes but matter in real operations: how OPatchAuto discovers which Oracle Homes exist on a node, how to run a non-invasive prerequisite check before committing to a patch window, and how Datapatch registers (and reverses) SQL-level changes in the database dictionary.

All command output and screenshots below are captured directly from the patching session (apply on both nodes, verification, and a rollback exercise for validation purposes), reformatted here for readability.

Environment Snapshot

      Cluster: 2-node Oracle RAC — racnode1 and racnode2

      Grid Infrastructure home: /u01/app/26.0.0/grid1

      Database home: /u01/app/oracle/product/26.0.0/dbhome_2

      Patch: 39568945 — Release Update 23.26.3.0.0 (from 23.26.2.0.0 Gold Image baseline)

      Tool: Oracle OPatchAuto, version 12.2.1.51.0

      Patching mode: in-place, rolling (node by node)

 

1. Command Reference — opatchauto apply -help

Before patching, it's worth revisiting what opatchauto apply actually exposes. The options below govern everything from home selection and logging to conflict handling, out-of-place cloning, and SQL-patch behavior — the switches that decide how controlled (or how aggressive) a patching run will be.

Option

What it does

-phBaseDir <patch.base.directory>

Location of the base patch directory.

-oh <home>

Location of the Oracle home to patch.

-log <log>

The log location.

-logLevel <log_priority>

Log level, defaults to INFO. Supported values: SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST, ALL, OFF.

-customLogDir <customLogDir>

Location for creating the log files.

-binary

Forces execution of “-phases offline:binary-patching”.

-analyze

Analyzes the environment for patch suitability on each home without changing it. The patch is not applied or rolled back, and targets are not shut down.

-invPtrLoc <inventory.pointer.location>

Central inventory pointer file location.

-host <host>

The remote host or host:port.

-wallet <wallet>

Location of the wallet file. Mandatory from DB 12.1 onwards when patching as a non-root user; the running user must be part of the wallet entry.

-force_conflict

Forces application of the patch when a conflict exists, removing all conflicting patches first.

-skip_conflict

Skips conflicting patches so the remaining patches can still be applied.

-no_relink

Skips the make/linking step so it runs only once across multiple patch applications; the final run should omit this option so compilation happens.

-deleteInactivePatches

Deletes inactive patches on the home before applying new ones. Required only for targets older than 23ai.

-skip_datapatch

Skips the sqlpatch (Datapatch) step; SQL changes are skipped on every database in the session.

-skip_twostage_enable

Skips enabling previously applied two-stage patches during apply.

-skip_rrpatch

Skips rrpatch-related actions during apply and rollback.

-post_twostage_enable

Enables incoming patches after applying them, towards the end of the session; effective on the last node patched.

-extreme_perf

Relinks the binary with the extremeperf make option to enable RAC in out-of-place patching.

-jre <jre>

Path to the JRE used for local patching (not used on remote nodes).

-drain_timeout <drain.timeout>

Maximum time a service waits before exiting or before SRVCTL proceeds to stop the database, once session draining is complete.

-remote-image-location <remote.image.location>

Remote image location path.

-port <port>

Port for connecting to the catalog database (default 1521).

-inplace

Patches the original Oracle home directly (default mode). Causes downtime and affects HA of services.

-sidb

Signifies patching of a standalone single-instance database (DB 12.2+).

-sdb

Signifies patching of a sharded database. Run 'opatchauto <apply|rollback> -sdb -help' for details.

-outofplace

Performs out-of-place patching in a single session: clones the Oracle home and switches to the clone (DB 12.2+).

-rolling

Enables sharded-database rolling mode, patching each database one after another.

-database <database>

List of databases to patch. Not supported for out-of-place patching.

-silent <silent.key>

Properties file mapping original home paths to expected clone home paths for out-of-place patching.

-prepare-clone

Prepares the clone Oracle home for out-of-place patching (DB 12.2+).

-norestart

Skips restart during execution.

-switch-clone

Switches services from the original home to the clone home (or back, on rollback). DB 12.2+.

-nonrolling

Enables non-rolling mode; mandatory for in-place patching of shared homes.

-sid <sid>

Instance name (standalone SIDB) or catalog database name (shard patching). Defaults to $ORACLE_SID if not supplied.

 

Typical Invocations

      Patch the GI home and all RAC homes: <GI_HOME>/OPatch/opatchauto apply <Patch_Location>

      Patch multiple homes explicitly: <GI_HOME>/OPatch/opatchauto apply <Patch_Location> -oh <GI_HOME>,<RAC_HOME1>,<RAC_HOME2>

      Patch specific databases on RAC homes only: <RAC_HOME>/OPatch/opatchauto apply <Patch_Location> -database db1,db2...dbn

      Patch a software-only install: <RAC_HOME>/OPatch/opatchauto apply <Patch_Location> -oh <RAC_HOME>

2. How OPatchAuto Discovers Oracle Homes

OPatchAuto doesn't guess which homes to patch — it reads the central inventory, inventory.xml, under the oraInventory/ContentsXML directory. Each <HOME> entry records the home's name, its filesystem location, and (for the Grid home) the CRS flag that marks it as the cluster's Grid Infrastructure home. This is exactly why a home must be properly registered before it can be targeted by an automated patching run.

RACNODE1 — CENTRAL INVENTORY BEFORE THE DB HOME WAS DE-REGISTERED

[root@racnode1 ContentsXML]# ls

comps.xml  inventory.xml  libs.xml

[root@racnode1 ContentsXML]# cat inventory.xml

<?xml version="1.0" standalone="yes" ?>

<!-- Copyright (c) 1999, 2026, Oracle and/or its affiliates.

All rights reserved. -->

<!-- Do not modify the contents of this file by hand. -->

<INVENTORY>

<VERSION_INFO>

   <SAVED_WITH>12.2.0.9.0</SAVED_WITH>

   <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>

</VERSION_INFO>

<HOME_LIST>

<HOME NAME="OraGI23Home1" LOC="/u01/app/26.0.0/grid" TYPE="O" IDX="1"/>

<HOME NAME="OraDB23Home1" LOC="/u01/app/oracle/product/26.0.0/dbhome_1" TYPE="O" IDX="2"/>

<HOME NAME="OraGI23Home2" LOC="/u01/app/26.0.0/grid1" TYPE="O" IDX="3" CRS="true"/>

<HOME NAME="OraDB23Home2" LOC="/u01/app/oracle/product/26.0.0/dbhome_2" TYPE="O" IDX="4"/>

</HOME_LIST>

<COMPOSITEHOME_LIST>

</COMPOSITEHOME_LIST>

</INVENTORY>

[root@racnode1 ContentsXML]# pwd

/u01/app/oraInventory/ContentsXML

[root@racnode1 ContentsXML]#

 

Four homes are registered at this point: two Grid Infrastructure homes and two Database homes.

RACNODE2 — INVENTORY.XML AFTER A DATABASE HOME WAS REMOVED

[root@racnode2 ContentsXML]# cat inventory.xml

<?xml version="1.0" standalone="yes" ?>

<!-- Copyright (c) 1999, 2026, Oracle and/or its affiliates.

All rights reserved. -->

<!-- Do not modify the contents of this file by hand. -->

<INVENTORY>

<VERSION_INFO>

   <SAVED_WITH>12.2.0.9.0</SAVED_WITH>

   <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>

</VERSION_INFO>

<HOME_LIST>

<HOME NAME="OraGI23Home1" LOC="/u01/app/26.0.0/grid" TYPE="O" IDX="1"/>

<HOME NAME="OraDB23Home1" LOC="/u01/app/oracle/product/26.0.0/dbhome_1" TYPE="O" IDX="2"/>

<HOME NAME="OraGI23Home2" LOC="/u01/app/26.0.0/grid1" TYPE="O" IDX="3" CRS="true"/>

</HOME_LIST>

<COMPOSITEHOME_LIST>

</COMPOSITEHOME_LIST>

</INVENTORY>

 

 

Figure 1 — inventory.xml content, viewed directly on the host.

Once a home is removed from this list, OPatchAuto simply stops seeing it — it will neither analyze it nor patch it. This is a useful first check whenever a patching run reports fewer homes than expected.

3. Prerequisite Check (‑analyze)

The -analyze flag runs every prerequisite and validation check OPatchAuto would normally run before an apply — patch applicability, conflict detection, and SQL-patch applicability — without touching the home or shutting anything down. It's the safest way to confirm a patch window will go cleanly before committing to any downtime.

PREREQUISITE CHECK KICKS OFF ON THE GRID HOME

[root@racnode1 grid1]# /u01/app/26.0.0/grid1/OPatch/opatchauto apply /u01/PatchOracleGI23.26.3/39568945 -analyze

 

OPatchauto session is initiated at Mon Sep 14 21:00:22 2026

 

System initialization log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchautodb/systemconfig2026-09-14_09-00-54PM.log.

 

Session log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/opatchauto2026-09-14_09-03-00PM.log

The id for this session is FUYP

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/26.0.0/grid1

 

 

Figure 2 — opatchauto apply -analyze initiating the prerequisite session.

FULL ANALYZE RUN — GRID HOME AND DATABASE HOME, RACNODE1

[root@racnode1 grid1]# /u01/app/26.0.0/grid1/OPatch/opatchauto apply /u01/PatchOracleGI23.26.3/39568945 -analyze

 

OPatchauto session is initiated at Mon Sep 14 21:00:22 2026

 

System initialization log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchautodb/systemconfig2026-09-14_09-00-54PM.log.

 

Session log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/opatchauto2026-09-14_09-03-00PM.log

The id for this session is FUYP

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/26.0.0/grid1

Patch applicability verified successfully on home /u01/app/26.0.0/grid1

 

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/26.0.0/dbhome_2

Patch applicability verified successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Executing patch validation checks on home /u01/app/26.0.0/grid1

Patch validation checks successfully completed on home /u01/app/26.0.0/grid1

 

 

Executing patch validation checks on home /u01/app/oracle/product/26.0.0/dbhome_2

Patch validation checks successfully completed on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Verifying SQL patch applicability on home /u01/app/oracle/product/26.0.0/dbhome_2

SQL patch applicability verified successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

OPatchAuto successful.

 

--------------------------------Summary--------------------------------

 

Analysis for applying patches has completed successfully:

 

Host:racnode1

CRS Home:/u01/app/26.0.0/grid1

Version:23.0.0.0.0

 

 

==Following patches were SUCCESSFULLY analyzed to be applied:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_21-05-15PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_21-05-15PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_21-05-15PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_21-05-15PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_21-05-15PM_1.log

 

 

Host:racnode1

RAC Home:/u01/app/oracle/product/26.0.0/dbhome_2

Version:23.0.0.0.0

 

 

==Following patches were SKIPPED:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Reason: This patch is not applicable to this specified target type - "rac_database"

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Reason: This patch is not applicable to this specified target type - "rac_database"

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Reason: This patch is not applicable to this specified target type - "rac_database"

 

 

==Following patches were SUCCESSFULLY analyzed to be applied:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/oracle/product/26.0.0/dbhome_2/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_21-13-31PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/oracle/product/26.0.0/dbhome_2/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_21-13-31PM_1.log

 

 

 

OPatchauto session completed at Mon Sep 14 21:22:47 2026

Time taken to complete the session 21 minutes, 56 seconds

[root@racnode1 grid1]#

 

A second -analyze pass below shows OPatchAuto correctly recognizing that a database running from a home on a different host is out of scope for the current session — it flags this rather than failing silently.

ANALYZE RUN — DATABASE HOME SKIPPED BECAUSE IT RUNS ON ANOTHER HOST

[root@racnode1 grid1]# /u01/app/26.0.0/grid1/OPatch/opatchauto apply /u01/PatchOracleGI23.26.3/39568945 -analyze

 

OPatchauto session is initiated at Mon Sep 14 21:54:41 2026

 

System initialization log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchautodb/systemconfig2026-09-14_09-55-10PM.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: orcldb

        Oracle Home: /u01/app/oracle/product/26.0.0/dbhome_2

        Host:

 racnode1

 racnode2

 

To complete the patching process for the above databases, execute it on host where the databases are running.

Session log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/opatchauto2026-09-14_09-56-07PM.log

The id for this session is 9PC9

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/26.0.0/grid1

Patch applicability verified successfully on home /u01/app/26.0.0/grid1

 

 

Executing patch validation checks on home /u01/app/26.0.0/grid1

Patch validation checks successfully completed on home /u01/app/26.0.0/grid1

 

OPatchAuto successful.

 

--------------------------------Summary--------------------------------

 

Analysis for applying patches has completed successfully:

 

Host:racnode1

CRS Home:/u01/app/26.0.0/grid1

Version:23.0.0.0.0

 

 

==Following patches were SUCCESSFULLY analyzed to be applied:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_21-58-03PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_21-58-03PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_21-58-03PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_21-58-03PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_21-58-03PM_1.log

 

 

 

OPatchauto session completed at Mon Sep 14 22:06:42 2026

Time taken to complete the session 11 minutes, 35 seconds

 

ANALYZE RUN — BOTH GRID AND DATABASE HOMES VALIDATED TOGETHER ON RACNODE1

[root@racnode1 grid1]# /u01/app/26.0.0/grid1/OPatch/opatchauto apply /u01/PatchOracleGI23.26.3/39568945 -analyze

 

OPatchauto session is initiated at Mon Sep 14 22:23:30 2026

 

System initialization log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchautodb/systemconfig2026-09-14_10-23-54PM.log.

 

Session log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/opatchauto2026-09-14_10-25-59PM.log

The id for this session is 5VTM

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/26.0.0/grid1

Patch applicability verified successfully on home /u01/app/26.0.0/grid1

 

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/26.0.0/dbhome_2

 

Patch applicability verified successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Executing patch validation checks on home /u01/app/26.0.0/grid1

Patch validation checks successfully completed on home /u01/app/26.0.0/grid1

 

 

Executing patch validation checks on home /u01/app/oracle/product/26.0.0/dbhome_2

Patch validation checks successfully completed on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Verifying SQL patch applicability on home /u01/app/oracle/product/26.0.0/dbhome_2

SQL patch applicability verified successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

OPatchAuto successful.

 

--------------------------------Summary--------------------------------

 

Analysis for applying patches has completed successfully:

 

Host:racnode1

CRS Home:/u01/app/26.0.0/grid1

Version:23.0.0.0.0

 

 

==Following patches were SUCCESSFULLY analyzed to be applied:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_22-28-12PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_22-28-12PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_22-28-12PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_22-28-12PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_22-28-12PM_1.log

 

 

Host:racnode1

RAC Home:/u01/app/oracle/product/26.0.0/dbhome_2

Version:23.0.0.0.0

 

 

==Following patches were SKIPPED:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Reason: This patch is not applicable to this specified target type - "rac_database"

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Reason: This patch is not applicable to this specified target type - "rac_database"

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Reason: This patch is not applicable to this specified target type - "rac_database"

 

 

==Following patches were SUCCESSFULLY analyzed to be applied:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/oracle/product/26.0.0/dbhome_2/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_22-35-44PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/oracle/product/26.0.0/dbhome_2/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_22-35-44PM_1.log

 

 

 

OPatchauto session completed at Mon Sep 14 22:42:32 2026

Time taken to complete the session 18 minutes, 41 seconds

 

 

Every analyze pass above finished with “OPatchAuto successful” and a clean summary — the green light to proceed with the real apply.

4. Applying the Patch

Node 1 — racnode1

With the prerequisite checks clean, the same command runs without -analyze. OPatchAuto brings down the CRS stack and the database service on this node, applies the binary patch to both the Grid and Database homes, runs the required root scripts, restarts CRS, and reports whether any SQL-level (Datapatch) action was needed on this node.

OPATCHAUTO APPLY — RACNODE1

[root@racnode1 grid1]# /u01/app/26.0.0/grid1/OPatch/opatchauto apply /u01/PatchOracleGI23.26.3/39568945

 

OPatchauto session is initiated at Mon Sep 14 22:45:04 2026

 

System initialization log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchautodb/systemconfig2026-09-14_10-45-38PM.log.

 

Session log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/opatchauto2026-09-14_10-47-36PM.log

The id for this session is REI7

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/26.0.0/grid1

Patch applicability verified successfully on home /u01/app/26.0.0/grid1

 

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/26.0.0/dbhome_2

Patch applicability verified successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Executing patch validation checks on home /u01/app/26.0.0/grid1

Patch validation checks successfully completed on home /u01/app/26.0.0/grid1

 

 

Executing patch validation checks on home /u01/app/oracle/product/26.0.0/dbhome_2

Patch validation checks successfully completed on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Enabling two-stage patches on home /u01/app/oracle/product/26.0.0/dbhome_2

Successfully enabled two-stage patches on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Updating OJVM libraries on all hosts for home /u01/app/oracle/product/26.0.0/dbhome_2

Successfully updated OJVM libraries on all hosts

 

 

Verifying SQL patch applicability on home /u01/app/oracle/product/26.0.0/dbhome_2

SQL patch applicability verified successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Preparing to bring down database service on home /u01/app/oracle/product/26.0.0/dbhome_2

Successfully prepared home /u01/app/oracle/product/26.0.0/dbhome_2 to bring down database service

 

 

Performing prepatch operations on CRS - bringing down CRS service on home /u01/app/26.0.0/grid1

Prepatch operation log file location: /u01/app/grid/crsdata/racnode1/crsconfig/crs_prepatch_apply_inplace_racnode1_2026-09-14_11-07-22PM.log

CRS service brought down successfully on home /u01/app/26.0.0/grid1

 

 

Performing prepatch operation on home /u01/app/oracle/product/26.0.0/dbhome_2

Prepatch operation completed successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Start applying binary patch on home /u01/app/oracle/product/26.0.0/dbhome_2

Binary patch applied successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Running rootadd_rdbms.sh on home /u01/app/oracle/product/26.0.0/dbhome_2

Successfully executed rootadd_rdbms.sh on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Performing postpatch operation on home /u01/app/oracle/product/26.0.0/dbhome_2

Postpatch operation completed successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Start applying binary patch on home /u01/app/26.0.0/grid1

Binary patch applied successfully on home /u01/app/26.0.0/grid1

 

 

Running rootadd_rdbms.sh on home /u01/app/26.0.0/grid1

Successfully executed rootadd_rdbms.sh on home /u01/app/26.0.0/grid1

 

 

 

 

Performing postpatch operations on CRS - starting CRS service on home /u01/app/26.0.0/grid1

Postpatch operation log file location: /u01/app/grid/crsdata/racnode1/crsconfig/crs_postpatch_apply_inplace_racnode1_2026-09-14_11-45-47PM.log

CRS service started successfully on home /u01/app/26.0.0/grid1

 

 

Preparing home /u01/app/oracle/product/26.0.0/dbhome_2 after database service restarted

No step execution required.........

 

 

Trying to apply SQL patch on home /u01/app/oracle/product/26.0.0/dbhome_2

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:racnode1

RAC Home:/u01/app/oracle/product/26.0.0/dbhome_2

Version:23.0.0.0.0

Summary:

 

==Following patches were SKIPPED:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Reason: This patch is not applicable to this specified target type - "rac_database"

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Reason: This patch is not applicable to this specified target type - "rac_database"

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Reason: This patch is not applicable to this specified target type - "rac_database"

 

 

==Following patches were SUCCESSFULLY applied:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/oracle/product/26.0.0/dbhome_2/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_23-11-32PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/oracle/product/26.0.0/dbhome_2/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_23-11-32PM_1.log

 

 

Host:racnode1

CRS Home:/u01/app/26.0.0/grid1

Version:23.0.0.0.0

Summary:

 

==Following patches were SUCCESSFULLY applied:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_23-30-19PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_23-30-19PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_23-30-19PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_23-30-19PM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-14_23-30-19PM_1.log

 

 

 

OPatchauto session completed at Tue Sep 15 00:05:32 2026

Time taken to complete the session 79 minutes, 57 seconds

 

 

After Applying Patch on First Node

 

Figure 3 — Node 1 patch level confirmed after the apply completes.

Node 2 — racnode2

On Node 2

 

Figure 4 — Node 2 status immediately before patching.

OPATCHAUTO APPLY — RACNODE2 (ROLLING PATCH, SECOND AND FINAL NODE)

[root@racnode2 grid]# /u01/app/26.0.0/grid1/OPatch/opatchauto apply /u01/PatchOracleGI23.26.3/39568945

 

OPatchauto session is initiated at Tue Sep 15 00:10:37 2026

 

System initialization log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchautodb/systemconfig2026-09-15_12-11-20AM.log.

 

Session log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/opatchauto2026-09-15_12-13-52AM.log

The id for this session is B68Z

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/26.0.0/grid1

Patch applicability verified successfully on home /u01/app/26.0.0/grid1

 

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/26.0.0/dbhome_2

Patch applicability verified successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Executing patch validation checks on home /u01/app/26.0.0/grid1

Patch validation checks successfully completed on home /u01/app/26.0.0/grid1

 

 

Executing patch validation checks on home /u01/app/oracle/product/26.0.0/dbhome_2

Patch validation checks successfully completed on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Enabling two-stage patches on home /u01/app/oracle/product/26.0.0/dbhome_2

Successfully enabled two-stage patches on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Verifying SQL patch applicability on home /u01/app/oracle/product/26.0.0/dbhome_2

SQL patch applicability verified successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Preparing to bring down database service on home /u01/app/oracle/product/26.0.0/dbhome_2

Successfully prepared home /u01/app/oracle/product/26.0.0/dbhome_2 to bring down database service

 

 

Performing prepatch operations on CRS - bringing down CRS service on home /u01/app/26.0.0/grid1

Prepatch operation log file location: /u01/app/grid/crsdata/racnode2/crsconfig/crs_prepatch_apply_inplace_racnode2_2026-09-15_00-34-24AM.log

CRS service brought down successfully on home /u01/app/26.0.0/grid1

 

 

Performing prepatch operation on home /u01/app/oracle/product/26.0.0/dbhome_2

Prepatch operation completed successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Start applying binary patch on home /u01/app/oracle/product/26.0.0/dbhome_2

Binary patch applied successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Running rootadd_rdbms.sh on home /u01/app/oracle/product/26.0.0/dbhome_2

Successfully executed rootadd_rdbms.sh on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Performing postpatch operation on home /u01/app/oracle/product/26.0.0/dbhome_2

Postpatch operation completed successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Start applying binary patch on home /u01/app/26.0.0/grid1

Binary patch applied successfully on home /u01/app/26.0.0/grid1

 

 

Running rootadd_rdbms.sh on home /u01/app/26.0.0/grid1

Successfully executed rootadd_rdbms.sh on home /u01/app/26.0.0/grid1

 

 

 

 

Performing postpatch operations on CRS - starting CRS service on home /u01/app/26.0.0/grid1

Postpatch operation log file location: /u01/app/grid/crsdata/racnode2/crsconfig/crs_postpatch_apply_inplace_racnode2_2026-09-15_01-15-03AM.log

CRS service started successfully on home /u01/app/26.0.0/grid1

 

 

Preparing home /u01/app/oracle/product/26.0.0/dbhome_2 after database service restarted

No step execution required.........

 

 

Trying to apply SQL patch on home /u01/app/oracle/product/26.0.0/dbhome_2

SQL patch applied successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

OPatchAuto successful.

 

--------------------------------Summary--------------------------------

 

Patching is completed successfully. Please find the summary as follows:

 

Host:racnode2

RAC Home:/u01/app/oracle/product/26.0.0/dbhome_2

Version:23.0.0.0.0

Summary:

 

==Following patches were SKIPPED:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Reason: This patch is not applicable to this specified target type - "rac_database"

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Reason: This patch is not applicable to this specified target type - "rac_database"

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Reason: This patch is not applicable to this specified target type - "rac_database"

 

 

==Following patches were SUCCESSFULLY applied:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/oracle/product/26.0.0/dbhome_2/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_00-39-03AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/oracle/product/26.0.0/dbhome_2/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_00-39-03AM_1.log

 

 

Host:racnode2

CRS Home:/u01/app/26.0.0/grid1

Version:23.0.0.0.0

Summary:

 

==Following patches were SUCCESSFULLY applied:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_00-58-40AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_00-58-40AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_00-58-40AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_00-58-40AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_00-58-40AM_1.log

 

 

 

OPatchauto session completed at Tue Sep 15 02:19:44 2026

Time taken to complete the session 128 minutes, 28 seconds

 

Post-Apply Verification

Verify:

Figure 5 — Both nodes reporting the new 23.26.3.0.0 patch level after the rolling apply.

5. Rollback — Validating the Reverse Path

To confirm the patch is fully reversible — an important safety property for any production change — the same patch was rolled back on both nodes using opatchauto rollback. OPatchAuto reverses the binary patch, re-runs the root scripts, and rolls back the SQL patch registration where applicable.

ROLLBACK:

[root@racnode1 grid]# /u01/app/26.0.0/grid1/OPatch/opatchauto rollback /u01/PatchOracleGI23.26.3/39568945

 

OPatchauto session is initiated at Tue Sep 15 06:42:22 2026

 

System initialization log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchautodb/systemconfig2026-09-15_06-42-35AM.log.

 

Session log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/opatchauto2026-09-15_06-44-56AM.log

The id for this session is MQ82

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/26.0.0/grid1

Patch applicability verified successfully on home /u01/app/26.0.0/grid1

 

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/26.0.0/dbhome_2

Patch applicability verified successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Executing patch validation checks on home /u01/app/26.0.0/grid1

Patch validation checks successfully completed on home /u01/app/26.0.0/grid1

 

 

Executing patch validation checks on home /u01/app/oracle/product/26.0.0/dbhome_2

Patch validation checks successfully completed on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Updating OJVM libraries on all hosts for home /u01/app/oracle/product/26.0.0/dbhome_2

Successfully updated OJVM libraries on all hosts

 

 

Verifying SQL patch applicability on home /u01/app/oracle/product/26.0.0/dbhome_2

"[/bin/sh -c 'cd /u01/app/oracle/product/26.0.0/dbhome_2; ORACLE_HOME=/u01/app/oracle/product/26.0.0/dbhome_2 ORACLE_SID=orcldb1 /u01/app/oracle/product/26.0.0/dbhome_2/OPatch/datapatch -prereq -verbose']" command failed with errors. Please refer to logs for more details. SQL changes, if any, can be analyzed by manually retrying the same command.

 

SQL patch applicability verified successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Preparing to bring down database service on home /u01/app/oracle/product/26.0.0/dbhome_2

Successfully prepared home /u01/app/oracle/product/26.0.0/dbhome_2 to bring down database service

 

 

Performing prepatch operations on CRS - bringing down CRS service on home /u01/app/26.0.0/grid1

Prepatch operation log file location: /u01/app/grid/crsdata/racnode1/crsconfig/crs_prepatch_apply_inplace_racnode1_2026-09-15_07-13-15AM.log

CRS service brought down successfully on home /u01/app/26.0.0/grid1

 

 

Performing prepatch operation on home /u01/app/oracle/product/26.0.0/dbhome_2

Prepatch operation completed successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Start rolling back binary patch on home /u01/app/oracle/product/26.0.0/dbhome_2

Binary patch rolled back successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Running rootadd_rdbms.sh on home /u01/app/oracle/product/26.0.0/dbhome_2

Successfully executed rootadd_rdbms.sh on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Performing postpatch operation on home /u01/app/oracle/product/26.0.0/dbhome_2

Postpatch operation completed successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Start rolling back binary patch on home /u01/app/26.0.0/grid1

Binary patch rolled back successfully on home /u01/app/26.0.0/grid1

 

 

Running rootadd_rdbms.sh on home /u01/app/26.0.0/grid1

Successfully executed rootadd_rdbms.sh on home /u01/app/26.0.0/grid1

 

 

 

 

Performing postpatch operations on CRS - starting CRS service on home /u01/app/26.0.0/grid1

Postpatch operation log file location: /u01/app/grid/crsdata/racnode1/crsconfig/crs_postpatch_apply_inplace_racnode1_2026-09-15_07-42-41AM.log

CRS service started successfully on home /u01/app/26.0.0/grid1

 

 

Preparing home /u01/app/oracle/product/26.0.0/dbhome_2 after database service restarted

No step execution required.........

 

 

Trying to roll back SQL patch on home /u01/app/oracle/product/26.0.0/dbhome_2

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:racnode1

RAC Home:/u01/app/oracle/product/26.0.0/dbhome_2

Version:23.0.0.0.0

Summary:

 

==Following patches were SKIPPED:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Reason: This patch is not applicable to this specified target type - "rac_database"

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Reason: This patch is not applicable to this specified target type - "rac_database"

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Reason: This patch is not applicable to this specified target type - "rac_database"

 

 

==Following patches were SUCCESSFULLY rolled back:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/oracle/product/26.0.0/dbhome_2/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_07-19-32AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/oracle/product/26.0.0/dbhome_2/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_07-19-32AM_1.log

 

 

Host:racnode1

CRS Home:/u01/app/26.0.0/grid1

Version:23.0.0.0.0

Summary:

 

==Following patches were SUCCESSFULLY rolled back:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_07-29-56AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_07-29-56AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_07-29-56AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_07-29-56AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_07-29-56AM_1.log

 

 

 

OPatchauto session completed at Tue Sep 15 07:51:14 2026

Time taken to complete the session 68 minutes, 54 seconds

 

Verify :

 

Figure 6 — Node 1 reporting the prior patch level after rollback.

Node 2 — Rollback

NODE 2:

[root@racnode2 grid]# /u01/app/26.0.0/grid1/OPatch/opatchauto rollback /u01/PatchOracleGI23.26.3/39568945

 

OPatchauto session is initiated at Tue Sep 15 09:05:41 2026

 

System initialization log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchautodb/systemconfig2026-09-15_09-05-52AM.log.

 

Session log file is /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/opatchauto2026-09-15_09-09-01AM.log

The id for this session is 9FX2

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/26.0.0/grid1

Patch applicability verified successfully on home /u01/app/26.0.0/grid1

 

 

Executing OPatch prereq operations to verify patch applicability on home /u01/app/oracle/product/26.0.0/dbhome_2

Patch applicability verified successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Executing patch validation checks on home /u01/app/26.0.0/grid1

Patch validation checks successfully completed on home /u01/app/26.0.0/grid1

 

 

Executing patch validation checks on home /u01/app/oracle/product/26.0.0/dbhome_2

Patch validation checks successfully completed on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Verifying SQL patch applicability on home /u01/app/oracle/product/26.0.0/dbhome_2

SQL patch applicability verified successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Preparing to bring down database service on home /u01/app/oracle/product/26.0.0/dbhome_2

Successfully prepared home /u01/app/oracle/product/26.0.0/dbhome_2 to bring down database service

 

 

Performing prepatch operations on CRS - bringing down CRS service on home /u01/app/26.0.0/grid1

Prepatch operation log file location: /u01/app/grid/crsdata/racnode2/crsconfig/crs_prepatch_apply_inplace_racnode2_2026-09-15_09-33-20AM.log

CRS service brought down successfully on home /u01/app/26.0.0/grid1

 

 

Performing prepatch operation on home /u01/app/oracle/product/26.0.0/dbhome_2

Prepatch operation completed successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Start rolling back binary patch on home /u01/app/oracle/product/26.0.0/dbhome_2

Binary patch rolled back successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Running rootadd_rdbms.sh on home /u01/app/oracle/product/26.0.0/dbhome_2

Successfully executed rootadd_rdbms.sh on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Performing postpatch operation on home /u01/app/oracle/product/26.0.0/dbhome_2

Postpatch operation completed successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

 

Start rolling back binary patch on home /u01/app/26.0.0/grid1

Binary patch rolled back successfully on home /u01/app/26.0.0/grid1

 

 

Running rootadd_rdbms.sh on home /u01/app/26.0.0/grid1

Successfully executed rootadd_rdbms.sh on home /u01/app/26.0.0/grid1

 

 

 

 

Performing postpatch operations on CRS - starting CRS service on home /u01/app/26.0.0/grid1

Postpatch operation log file location: /u01/app/grid/crsdata/racnode2/crsconfig/crs_postpatch_apply_inplace_racnode2_2026-09-15_10-03-09AM.log

CRS service started successfully on home /u01/app/26.0.0/grid1

 

 

Preparing home /u01/app/oracle/product/26.0.0/dbhome_2 after database service restarted

No step execution required.........

 

 

Trying to roll back SQL patch on home /u01/app/oracle/product/26.0.0/dbhome_2

SQL patch rolled back successfully on home /u01/app/oracle/product/26.0.0/dbhome_2

 

OPatchAuto successful.

 

--------------------------------Summary--------------------------------

 

Patching is completed successfully. Please find the summary as follows:

 

Host:racnode2

RAC Home:/u01/app/oracle/product/26.0.0/dbhome_2

Version:23.0.0.0.0

Summary:

 

==Following patches were SKIPPED:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Reason: This patch is not applicable to this specified target type - "rac_database"

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Reason: This patch is not applicable to this specified target type - "rac_database"

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Reason: This patch is not applicable to this specified target type - "rac_database"

 

 

==Following patches were SUCCESSFULLY rolled back:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/oracle/product/26.0.0/dbhome_2/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_09-39-25AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/oracle/product/26.0.0/dbhome_2/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_09-39-25AM_1.log

 

 

Host:racnode2

CRS Home:/u01/app/26.0.0/grid1

Version:23.0.0.0.0

Summary:

 

==Following patches were SUCCESSFULLY rolled back:

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578859

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_09-51-07AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578865

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_09-51-07AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578862

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_09-51-07AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578856

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_09-51-07AM_1.log

 

Patch: /u01/PatchOracleGI23.26.3/39568945/39578879

Log: /u01/app/26.0.0/grid1/cfgtoollogs/opatchauto/core/opatch/opatch2026-09-15_09-51-07AM_1.log

 

 

 

OPatchauto session completed at Tue Sep 15 10:53:56 2026

Time taken to complete the session 108 minutes, 18 seconds

 

Verify:

 

Figure 7 — Both nodes confirmed back on the pre-patch release after rollback.

6. Datapatch Verification — dba_registry_sqlpatch

OPatchAuto invokes Datapatch automatically to reconcile SQL-level changes with the binary patch level, but it's still good practice to confirm this directly against the database dictionary. The dba_registry_sqlpatch view is the source of truth for what's actually registered — apply, rollback, and every prior Release Update, in order.

SQL QUERY

SQL> SELECT patch_id, patch_type, action, status, description, action_time

  2  FROM dba_registry_sqlpatch

  3  ORDER BY action_time DESC;

 

REGISTERED SQL PATCHES, MOST RECENT FIRST

Patch ID

Type

Action

Status

Description

Action Time

39578879

RU

ROLLBACK

SUCCESS

Database Release Update : 23.26.3.0.0 (39578879)

15-SEP-26 10.35.24 AM

39578879

RU

APPLY

SUCCESS

Database Release Update : 23.26.3.0.0 (39578879)

15-SEP-26 02.00.48 AM

39093711

RU

APPLY

SUCCESS

Database Release Update : 23.26.2.0.0 (39093711) Gold Image

04-MAY-26 12.38.31 PM

38743669

RU

APPLY

SUCCESS

Database Release Update : 23.26.1.0.0 (38743669) Gold Image

03-MAY-26 11.46.22 PM

 

The registry tells the whole story cleanly: the 23.26.3.0.0 Release Update was applied at 02:00 AM and later rolled back at 10:35 AM in the same session — confirming both directions of the patch were exercised successfully and are fully tracked in the database dictionary.

Key Takeaways

      Always run opatchauto apply <patch> -analyze first — it runs every prerequisite and validation check with zero risk to the home or downtime to services.

      OPatchAuto's view of “what can be patched” comes directly from oraInventory/inventory.xml — verify a home is registered there before assuming it's in scope.

      In a rolling RAC patch, each node is fully patched — CRS down, binaries patched, root scripts run, CRS back up — before OPatchAuto moves to the next node.

      Datapatch runs automatically as part of OPatchAuto, but dba_registry_sqlpatch remains the definitive record of what SQL changes are actually registered.

      Testing the rollback path, not just the apply path, is what turns a patching exercise into a verified, production-ready runbook.

 

Hope this breakdown is useful to fellow Oracle DBAs and Solution Architects working with 23ai Grid Infrastructure and RAC. Happy to exchange notes on OPatchAuto, RAC/ASM, Data Guard, or GoldenGate patching strategies in the comments.

Comments

Popular posts from this blog

Strengthening Database Security with SQL Firewall in Oracle 26ai

MySQL Replication on Oracle Cloud’s “Always Free” Compute Instance

MySQL Installation on Oracle Cloud’s “Always Free” Compute Instance