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
Post a Comment