Skip to main content

Rollback Oracle 19c Database RU Patch Using OPatch

Rollback Oracle 19c Database RU Patch Using OPatch

Introduction

Applying a Release Update (RU) patch to an Oracle Database doesn't always go smoothly, and sometimes the safest path forward is backward. This article walks through rolling back an already-applied RU patch step by step, using opatch rollback and datapatch, in case a newly applied RU causes issues in your environment.

Prerequisites

  • The RU patch you intend to roll back must already be applied — this is a rollback of an existing patch, not a fresh install.
  • A maintenance window of at least 120 minutes at the database end, since the instance must be shut down during the rollback.

Environment Used in this Guide

Hostname devdb.oraeasy.com
OS OL9
Database Name DEVDB

Approach

Two RU patches have been applied on this database in sequence: 19.25 (36912597) and 19.27 (37642901). This article rolls back 19.27 (37642901), which returns the database to the previously applied 19.25 patch level rather than an unpatched state, since opatch rollback only removes the specific patch you target.

Rolling Back the Patch Step by Step

Step 1: Precheck and Capture Current Patch Details

Before touching anything, record the current patch state and confirm the database has no invalid objects. This gives you a clear "before" picture to compare against once the rollback completes in Step 7, and confirms there's nothing already broken that the rollback could get blamed for.


SQL> DEF
DEFINE _DATE           = "02-SEP-25" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "devdb" (CHAR)
DEFINE _USER           = "SYS" (CHAR)
DEFINE _PRIVILEGE      = "AS SYSDBA" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1927000000" (CHAR)
DEFINE _EDITOR         = "vi" (CHAR)
DEFINE _O_VERSION      = "Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.27.0.0.0" (CHAR)
DEFINE _O_RELEASE      = "1927000000" (CHAR)
SQL>
SQL> SHOW PDBS

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DEVDBPDB                       READ WRITE NO
SQL>         
SQL> SET LINESIZE 333 PAGESIZE 333
SQL> SELECT name, db_unique_name, database_role, open_mode FROM v$database;

NAME      DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE
--------- ------------------------------ ---------------- --------------------
DEVDB     devdb                          PRIMARY          READ WRITE

SQL> SELECT banner_full FROM v$version;

BANNER_FULL
------------------------------------------------------------------------                    
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.27.0.0.0 

SQL> COLUMN action_time FORMAT A20
SQL> COLUMN action FORMAT A10
SQL> COLUMN status FORMAT A10
SQL> COLUMN description FORMAT A60
SQL> SELECT patch_uid, patch_id, source_version, target_version, 
       action, status, action_time, description 
       FROM dba_registry_sqlpatch;
       
 PATCH_UID   PATCH_ID SOURCE_VERSION  TARGET_VERSION  ACTION     STATUS     ACTION_TIME          DESCRIPTION
---------- ---------- --------------- --------------- ---------- ---------- -------------------- ------------------------------------------------------------
  22862832   29517242 19.1.0.0.0      19.3.0.0.0      APPLY      SUCCESS    31-JUL-25 01.45.40.8 Database Release Update : 19.3.0.0.190416 (29517242)
                                                                            62490 PM

  25871884   36912597 19.3.0.0.0      19.25.0.0.0     APPLY      SUCCESS    02-SEP-25 12.35.34.6 Database Release Update : 19.25.0.0.241015 (36912597)
                                                                            01504 PM

  27123174   37642901 19.25.0.0.0     19.27.0.0.0     APPLY      SUCCESS    02-SEP-25 03.58.08.9 Database Release Update : 19.27.0.0.250415 (37642901)
                                                                            34050 PM

SQL> COLUMN comp_id FORMAT A10
SQL> COLUMN version FORMAT A11
SQL> COLUMN status FORMAT A10
SQL> COLUMN comp_name FORMAT A37
SQL> SELECT comp_id, comp_name, version, status FROM dba_registry;

COMP_ID    COMP_NAME                             VERSION     STATUS
---------- ------------------------------------- ----------- ----------
CATALOG    Oracle Database Catalog Views         19.0.0.0.0  VALID
CATPROC    Oracle Database Packages and Types    19.0.0.0.0  VALID
JAVAVM     JServer JAVA Virtual Machine          19.0.0.0.0  VALID
XML        Oracle XDK                            19.0.0.0.0  VALID
CATJAVA    Oracle Database Java Packages         19.0.0.0.0  VALID
APS        OLAP Analytic Workspace               19.0.0.0.0  VALID
RAC        Oracle Real Application Clusters      19.0.0.0.0  OPTION OFF
XDB        Oracle XML Database                   19.0.0.0.0  VALID
OWM        Oracle Workspace Manager              19.0.0.0.0  VALID
CONTEXT    Oracle Text                           19.0.0.0.0  VALID
ORDIM      Oracle Multimedia                     19.0.0.0.0  VALID
SDO        Spatial                               19.0.0.0.0  VALID
XOQ        Oracle OLAP API                       19.0.0.0.0  VALID
OLS        Oracle Label Security                 19.0.0.0.0  VALID
DV         Oracle Database Vault                 19.0.0.0.0  VALID

15 rows selected.

SQL> SELECT COUNT(*) FROM dba_objects WHERE status = 'INVALID';

  COUNT(*)
----------
         0
         
SQL> ALTER SESSION SET CONTAINER=DEVDBPDB;

Session altered.

SQL> SHOW PDBS

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 DEVDBPDB                       READ WRITE NO

SQL> SELECT comp_id, comp_name, version, status FROM dba_registry;

COMP_ID    COMP_NAME                             VERSION     STATUS
---------- ------------------------------------- ----------- ----------
CATALOG    Oracle Database Catalog Views         19.0.0.0.0  VALID
CATPROC    Oracle Database Packages and Types    19.0.0.0.0  VALID
JAVAVM     JServer JAVA Virtual Machine          19.0.0.0.0  VALID
XML        Oracle XDK                            19.0.0.0.0  VALID
CATJAVA    Oracle Database Java Packages         19.0.0.0.0  VALID
APS        OLAP Analytic Workspace               19.0.0.0.0  VALID
RAC        Oracle Real Application Clusters      19.0.0.0.0  OPTION OFF
XDB        Oracle XML Database                   19.0.0.0.0  VALID
OWM        Oracle Workspace Manager              19.0.0.0.0  VALID
CONTEXT    Oracle Text                           19.0.0.0.0  VALID
ORDIM      Oracle Multimedia                     19.0.0.0.0  VALID
SDO        Spatial                               19.0.0.0.0  VALID
XOQ        Oracle OLAP API                       19.0.0.0.0  VALID
OLS        Oracle Label Security                 19.0.0.0.0  VALID
DV         Oracle Database Vault                 19.0.0.0.0  VALID

15 rows selected.

SQL> SELECT COUNT(*) FROM dba_objects WHERE status = 'INVALID';

  COUNT(*)
----------
         0
         
SQL> exit

[oracle@devdb ~]$ cd $ORACLE_HOME/OPatch
[oracle@devdb OPatch]$
[oracle@devdb OPatch]$ ./opatch lsinventory| grep -i applied
Patch  37642901     : applied on Tue Sep 02 15:07:35 IST 2025
Patch  29585399     : applied on Thu Apr 18 12:51:33 IST 2019
[oracle@devdb OPatch]$
[oracle@devdb OPatch]$ ./opatch lspatches
37642901;Database Release Update : 19.27.0.0.250415 (37642901)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)

OPatch succeeded.
[oracle@devdb OPatch]$
[oracle@devdb OPatch]$ ./opatch lsinventory| grep 37642901
Patch  37642901     : applied on Tue Sep 02 15:07:35 IST 2025
Patch description:  "Database Release Update : 19.27.0.0.250415 (37642901)"
[oracle@devdb OPatch]$

The zero invalid-object count and the 37642901 entry in lspatches confirm the database is currently on 19.27 and healthy before the rollback begins.

Step 2: Stop the Database Services

opatch rollback requires the instance to be down, since it patches binaries and libraries the running database has loaded into memory. Stop the listener first, then shut down the instance cleanly.


[oracle@devdb ~]$ lsnrctl stop

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 02-SEP-2025 17:23:50

Copyright (c) 1991, 2025, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully
[oracle@devdb ~]$
[oracle@devdb ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 2 17:23:58 2025
Version 19.27.0.0.0

Copyright (c) 1982, 2024, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.27.0.0.0

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DEVDBPDB                       READ WRITE NO
SQL>
SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> exit

Step 3: Roll Back the Patch Using opatch rollback

Pass the specific patch ID to -id so OPatch rolls back only that patch, not the entire patch history. Confirm the readiness prompt with y once you're sure the instance is down.


[oracle@devdb ~]$ $ORACLE_HOME/OPatch/opatch rollback -id 37642901
Oracle Interim Patch Installer version 12.2.0.1.46
Copyright (c) 2025, Oracle Corporation.  All rights reserved.


Oracle Home       : /u01/app/oracle/product/19c/db_home
Central Inventory : /u01/app/oraInventory
   from           : /u01/app/oracle/product/19c/db_home/oraInst.loc
OPatch version    : 12.2.0.1.46
OUI version       : 12.2.0.7.0
Log file location : /u01/app/oracle/product/19c/db_home/cfgtoollogs/opatch/opatch2025-09-02_17-25-13PM_1.log


Patches will be rolled back in the following order:
   37642901
The following patch(es) will be rolled back: 37642901

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


Is the local system ready for patching? [y|n]
y
User Responded with: Y

Rolling back patch 37642901...

RollbackSession rolling back interim patch '37642901' from OH '/u01/app/oracle/product/19c/db_home'

Patching component oracle.rdbms, 19.0.0.0.0...

Patching component oracle.rdbms.util, 19.0.0.0.0...

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

Patching component oracle.assistants.acf, 19.0.0.0.0...

Patching component oracle.assistants.deconfig, 19.0.0.0.0...

Patching component oracle.assistants.server, 19.0.0.0.0...

Patching component oracle.blaslapack, 19.0.0.0.0...

Patching component oracle.buildtools.rsf, 19.0.0.0.0...

Patching component oracle.ctx, 19.0.0.0.0...

Patching component oracle.dbdev, 19.0.0.0.0...

Patching component oracle.dbjava.ic, 19.0.0.0.0...

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

Patching component oracle.dbjava.ucp, 19.0.0.0.0...

Patching component oracle.duma, 19.0.0.0.0...

Patching component oracle.javavm.client, 19.0.0.0.0...

Patching component oracle.ldap.owm, 19.0.0.0.0...

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

Patching component oracle.ldap.security.osdt, 19.0.0.0.0...

Patching component oracle.marvel, 19.0.0.0.0...

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

Patching component oracle.odbc.ic, 19.0.0.0.0...

Patching component oracle.ons, 19.0.0.0.0...

Patching component oracle.ons.ic, 19.0.0.0.0...

Patching component oracle.oracore.rsf, 19.0.0.0.0...

Patching component oracle.perlint, 5.28.1.0.0...

Patching component oracle.precomp.common.core, 19.0.0.0.0...

Patching component oracle.precomp.rsf, 19.0.0.0.0...

Patching component oracle.rdbms.crs, 19.0.0.0.0...

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

Patching component oracle.rdbms.deconfig, 19.0.0.0.0...

Patching component oracle.rdbms.oci, 19.0.0.0.0...

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

Patching component oracle.rdbms.scheduler, 19.0.0.0.0...

Patching component oracle.rhp.db, 19.0.0.0.0...

Patching component oracle.rsf, 19.0.0.0.0...

Patching component oracle.sdo, 19.0.0.0.0...

Patching component oracle.sdo.locator.jrf, 19.0.0.0.0...

Patching component oracle.sqlplus, 19.0.0.0.0...

Patching component oracle.sqlplus.ic, 19.0.0.0.0...

Patching component oracle.sqlj.sqljruntime, 19.0.0.0.0...

Patching component oracle.tfa.db, 19.0.0.0.0...

Patching component oracle.wwg.plsql, 19.0.0.0.0...

Patching component oracle.xdk.rsf, 19.0.0.0.0...

Patching component oracle.ldap.client, 19.0.0.0.0...

Patching component oracle.ldap.ssl, 19.0.0.0.0...

Patching component oracle.nlsrtl.rsf.core, 19.0.0.0.0...

Patching component oracle.oraolap.dbscripts, 19.0.0.0.0...

Patching component oracle.mgw.common, 19.0.0.0.0...

Patching component oracle.rdbms.install.plugins, 19.0.0.0.0...

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

Patching component oracle.javavm.server, 19.0.0.0.0...

Patching component oracle.ovm, 19.0.0.0.0...

Patching component oracle.rdbms.locator, 19.0.0.0.0...

Patching component oracle.xdk.parser.java, 19.0.0.0.0...

Patching component oracle.oraolap.api, 19.0.0.0.0...

Patching component oracle.nlsrtl.rsf.lbuilder, 19.0.0.0.0...

Patching component oracle.rdbms.lbac, 19.0.0.0.0...

Patching component oracle.ctx.rsf, 19.0.0.0.0...

Patching component oracle.rdbms.install.common, 19.0.0.0.0...

Patching component oracle.network.listener, 19.0.0.0.0...

Patching component oracle.xdk.xquery, 19.0.0.0.0...

Patching component oracle.odbc, 19.0.0.0.0...

Patching component oracle.ctx.atg, 19.0.0.0.0...

Patching component oracle.rdbms.hs_common, 19.0.0.0.0...

Patching component oracle.oraolap, 19.0.0.0.0...

Patching component oracle.network.aso, 19.0.0.0.0...

Patching component oracle.nlsrtl.rsf, 19.0.0.0.0...

Patching component oracle.nlsrtl.rsf.core, 19.0.0.0.0...

Patching component oracle.nlsrtl.rsf.ic, 19.0.0.0.0...

Patching component oracle.dbtoolslistener, 19.0.0.0.0...

Patching component oracle.rdbms.rman, 19.0.0.0.0...

Patching component oracle.xdk, 19.0.0.0.0...

Patching component oracle.rdbms.drdaas, 19.0.0.0.0...

Patching component oracle.rdbms.hsodbc, 19.0.0.0.0...

Patching component oracle.network.client, 19.0.0.0.0...

Patching component oracle.rdbms.dm, 19.0.0.0.0...

Patching component oracle.sdo.locator, 19.0.0.0.0...

Patching component oracle.rdbms.dv, 19.0.0.0.0...

Patching component oracle.rdbms.rat, 19.0.0.0.0...

Patching component oracle.install.deinstalltool, 19.0.0.0.0...

Patching component oracle.precomp.lang, 19.0.0.0.0...

Patching component oracle.precomp.common, 19.0.0.0.0...

Patching component oracle.jdk, 1.8.0.201.0...
RollbackSession removing interim patch '37642901' from inventory
Inactive sub-set patch [36912597] has become active due to the rolling back of a super-set patch [37642901].
Please refer to Doc ID 2161861.1 for any possible further required actions.
Log file location: /u01/app/oracle/product/19c/db_home/cfgtoollogs/opatch/opatch2025-09-02_17-25-13PM_1.log

OPatch succeeded.
[oracle@devdb ~]$

The line about the "inactive sub-set patch" becoming active is expected here, not an error — because 19.27 was applied on top of 19.25, removing 19.27 naturally re-activates 19.25 as the current patch level, which Step 4 confirms.

Step 4: Verify the Current Patch

Run lsinventory and lspatches again to confirm the binary-level rollback took effect before moving on to the database restart.


[oracle@devdb ~]$ cd $ORACLE_HOME/OPatch
[oracle@devdb OPatch]$
[oracle@devdb OPatch]$
[oracle@devdb OPatch]$ ./opatch lsinventory| grep -i applied
Patch  36912597     : applied on Tue Sep 02 11:12:57 IST 2025
Patch  29585399     : applied on Thu Apr 18 12:51:33 IST 2019
[oracle@devdb OPatch]$
[oracle@devdb OPatch]$ ./opatch lspatches
36912597;Database Release Update : 19.25.0.0.241015 (36912597)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)

OPatch succeeded.
[oracle@devdb OPatch]$

37642901 no longer appears in either listing, and 36912597 (the 19.25 RU) is now the active database patch — exactly the rollback target described in the Approach section above.

Step 5: Start the Database Services

With the binary rollback confirmed, bring the instance back up. The SQL-level patch registry still needs to catch up with this binary change, which is what Step 6 handles next.


SQL> STARTUP
ORACLE instance started.

Total System Global Area 1174403128 bytes
Fixed Size                  9177144 bytes
Variable Size             905969664 bytes
Database Buffers          251658240 bytes
Redo Buffers                7598080 bytes
Database mounted.
Database opened.
SQL>
SQL> SHOW PDBS

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DEVDBPDB                       READ WRITE NO
SQL>
SQL> exit

Step 6: Run Datapatch to Update the SQL Patch Registry

The binary rollback in Step 3 only reverts files on disk — the SQL-level objects, packages, and views that 19.27 installed inside each PDB are still there until datapatch reconciles the registry. Run it with -verbose so you can see exactly which PDBs get rolled back.


[oracle@devdb OPatch]$ ./datapatch -verbose
SQL Patching tool version 19.25.0.0.0 Production on Tue Sep  2 17:44:41 2025
Copyright (c) 2012, 2024, Oracle.  All rights reserved.

Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_9033_2025_09_02_17_44_41/sqlpatch_invocation.log

Connecting to database...OK
Gathering database info...done

Note:  Datapatch will only apply or rollback SQL fixes for PDBs
       that are in an open state, no patches will be applied to closed PDBs.
       Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
       (Doc ID 1585822.1)

Bootstrapping registry and package to current versions...done
Determining current state...done

Current state of interim SQL patches:
  No interim patches found

Current state of release update SQL patches:
  Binary registry:
    19.25.0.0.0 Release_Update 241010184253: Installed
  PDB CDB$ROOT:
    Applied 19.27.0.0.0 Release_Update 250406131139 successfully on 02-SEP-25 03.58.08.934050 PM
  PDB DEVDBPDB:
    Applied 19.27.0.0.0 Release_Update 250406131139 successfully on 02-SEP-25 04.08.33.573660 PM
  PDB PDB$SEED:
    Applied 19.27.0.0.0 Release_Update 250406131139 successfully on 02-SEP-25 04.08.33.573838 PM

Adding patches to installation queue and performing prereq checks...done
Installation queue:
  For the following PDBs: CDB$ROOT PDB$SEED DEVDBPDB
    No interim patches need to be rolled back
    Patch 37642901 (Database Release Update : 19.27.0.0.250415 (37642901)):
      Rollback from 19.27.0.0.0 Release_Update 250406131139 to 19.25.0.0.0 Release_Update 241010184253
    No interim patches need to be applied

Installing patches...
Patch installation complete.  Total patches installed: 3

Validating logfiles...done
Patch 37642901 rollback (pdb CDB$ROOT): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/37642901/27123174/37642901_rollback_DEVDB_CDBROOT_2025Sep02_17_45_54.log (no errors)
Patch 37642901 rollback (pdb PDB$SEED): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/37642901/27123174/37642901_rollback_DEVDB_PDBSEED_2025Sep02_17_53_45.log (no errors)
Patch 37642901 rollback (pdb DEVDBPDB): SUCCESS
  logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/37642901/27123174/37642901_rollback_DEVDB_DEVDBPDB_2025Sep02_17_53_42.log (no errors)
SQL Patching tool complete on Tue Sep  2 17:59:40 2025
[oracle@devdb OPatch]$

All three PDBs — CDB$ROOT, PDB$SEED, and DEVDBPDB — show a SUCCESS rollback with no errors, which confirms the SQL registry now matches the binary rollback from Step 3.

Step 7: Perform the Post Check

Run the same checks from Step 1 again. This time, the patch history should show a ROLLBACK row for 37642901 alongside its original APPLY row, and the version banner should read 19.25.


SQL> DEF
DEFINE _DATE           = "02-SEP-25" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "devdb" (CHAR)
DEFINE _USER           = "SYS" (CHAR)
DEFINE _PRIVILEGE      = "AS SYSDBA" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1925000000" (CHAR)
DEFINE _EDITOR         = "vi" (CHAR)
DEFINE _O_VERSION      = "Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.25.0.0.0" (CHAR)
DEFINE _O_RELEASE      = "1925000000" (CHAR)
SQL>
SQL> SHOW PDBS

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DEVDBPDB                       READ WRITE NO
SQL>
SQL> SET LINESIZE 333 PAGESIZE 333
SQL> SELECT name, db_unique_name, database_role, open_mode FROM v$database;

NAME      DB_UNIQUE_NAME    DATABASE_ROLE    OPEN_MODE
--------- ----------------- ---------------- --------------------
DEVDB     devdb                          PRIMARY          READ WRITE

SQL> SELECT banner_full FROM v$version;

BANNER_FULL
----------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.25.0.0.0

SQL> COLUMN action_time FORMAT A20
SQL> COLUMN action FORMAT A10
SQL> COLUMN status FORMAT A10
SQL> COLUMN description FORMAT A60
SQL> SELECT patch_uid, patch_id, source_version, target_version, 
       action, status, action_time, description 
       FROM dba_registry_sqlpatch;

 PATCH_UID   PATCH_ID SOURCE_VERSION  TARGET_VERSION  ACTION     STATUS     ACTION_TIME          DESCRIPTION
---------- ---------- --------------- --------------- ---------- ---------- -------------------- ------------------------------------------------------------
  22862832   29517242 19.1.0.0.0      19.3.0.0.0      APPLY      SUCCESS    31-JUL-25 01.45.40.8 Database Release Update : 19.3.0.0.190416 (29517242)
                                                                            62490 PM

  25871884   36912597 19.3.0.0.0      19.25.0.0.0     APPLY      SUCCESS    02-SEP-25 12.35.34.6 Database Release Update : 19.25.0.0.241015 (36912597)
                                                                            01504 PM

  27123174   37642901 19.25.0.0.0     19.27.0.0.0     APPLY      SUCCESS    02-SEP-25 03.58.08.9 Database Release Update : 19.27.0.0.250415 (37642901)
                                                                            34050 PM

  27123174   37642901 19.27.0.0.0     19.25.0.0.0     ROLLBACK   SUCCESS    02-SEP-25 05.52.00.0 Database Release Update : 19.27.0.0.250415 (37642901)
                                                                            03677 PM

SQL>
SQL> COLUMN comp_id FORMAT A10
SQL> COLUMN version FORMAT A11
SQL> COLUMN status FORMAT A10
SQL> COLUMN comp_name FORMAT A37
SQL> SELECT comp_id, comp_name, version, status FROM dba_registry;

COMP_ID    COMP_NAME                             VERSION     STATUS
---------- ------------------------------------- ----------- ----------
CATALOG    Oracle Database Catalog Views         19.0.0.0.0  VALID
CATPROC    Oracle Database Packages and Types    19.0.0.0.0  VALID
JAVAVM     JServer JAVA Virtual Machine          19.0.0.0.0  VALID
XML        Oracle XDK                            19.0.0.0.0  VALID
CATJAVA    Oracle Database Java Packages         19.0.0.0.0  VALID
APS        OLAP Analytic Workspace               19.0.0.0.0  VALID
RAC        Oracle Real Application Clusters      19.0.0.0.0  OPTION OFF
XDB        Oracle XML Database                   19.0.0.0.0  VALID
OWM        Oracle Workspace Manager              19.0.0.0.0  VALID
CONTEXT    Oracle Text                           19.0.0.0.0  VALID
ORDIM      Oracle Multimedia                     19.0.0.0.0  VALID
SDO        Spatial                               19.0.0.0.0  VALID
XOQ        Oracle OLAP API                       19.0.0.0.0  VALID
OLS        Oracle Label Security                 19.0.0.0.0  VALID
DV         Oracle Database Vault                 19.0.0.0.0  VALID

15 rows selected.

SQL> SELECT COUNT(*) FROM dba_objects WHERE status = 'INVALID';

  COUNT(*)
----------
         0

SQL>
SQL> ALTER SESSION SET CONTAINER=DEVDBPDB;

Session altered.

SQL>
SQL> SELECT comp_id, comp_name, version, status FROM dba_registry;

COMP_ID    COMP_NAME                             VERSION     STATUS
---------- ------------------------------------- ----------- ----------
CATALOG    Oracle Database Catalog Views         19.0.0.0.0  VALID
CATPROC    Oracle Database Packages and Types    19.0.0.0.0  VALID
JAVAVM     JServer JAVA Virtual Machine          19.0.0.0.0  VALID
XML        Oracle XDK                            19.0.0.0.0  VALID
CATJAVA    Oracle Database Java Packages         19.0.0.0.0  VALID
APS        OLAP Analytic Workspace               19.0.0.0.0  VALID
RAC        Oracle Real Application Clusters      19.0.0.0.0  OPTION OFF
XDB        Oracle XML Database                   19.0.0.0.0  VALID
OWM        Oracle Workspace Manager              19.0.0.0.0  VALID
CONTEXT    Oracle Text                           19.0.0.0.0  VALID
ORDIM      Oracle Multimedia                     19.0.0.0.0  VALID
SDO        Spatial                               19.0.0.0.0  VALID
XOQ        Oracle OLAP API                       19.0.0.0.0  VALID
OLS        Oracle Label Security                 19.0.0.0.0  VALID
DV         Oracle Database Vault                 19.0.0.0.0  VALID

15 rows selected.

SQL>
SQL> SELECT COUNT(*) FROM dba_objects WHERE status = 'INVALID';

  COUNT(*)
----------
         0

SQL> exit

[oracle@devdb OPatch]$
[oracle@devdb OPatch]$ cd $ORACLE_HOME/OPatch
[oracle@devdb OPatch]$
[oracle@devdb OPatch]$ ./opatch lsinventory| grep -i applied
Patch  36912597     : applied on Tue Sep 02 11:12:57 IST 2025
Patch  29585399     : applied on Thu Apr 18 12:51:33 IST 2019
[oracle@devdb OPatch]$
[oracle@devdb OPatch]$ ./opatch lspatches
36912597;Database Release Update : 19.25.0.0.241015 (36912597)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)

OPatch succeeded.
[oracle@devdb OPatch]$

The new ROLLBACK row for 37642901, the zero invalid-object count in both the root container and the PDB, and the version banner now reading 19.25.0.0.0 together confirm the rollback completed cleanly at both the binary and SQL levels.

Note: If you find any invalid component or object, run @$ORACLE_HOME/rdbms/admin/utlrp.sql to recompile it.



Thank you for reading!

I hope this content has been helpful to you. Your feedback and suggestions are always welcome. Feel free to leave a comment or reach out with any queries.

Abhishek Shrivastava

Oracle DBA with hands-on experience managing production Data Guard, RAC, GoldenGate, and APEX environments. I write practical, tested installation and troubleshooting guides based on real deployment work.

πŸ“§ Email: oraeasyy@gmail.com
🌐 Website: www.oraeasy.com

Follow Us

Comments

  1. πŸ‘πŸΌπŸ‘πŸΌπŸ‘πŸΌ πŸ‘ŒπŸ»πŸ‘ŒπŸ»

    ReplyDelete

Post a Comment

↑