Skip to main content

How to apply Oracle RU patch 19.27 on Windows

Applying an Oracle RU patch on Windows

Introduction

In this article, we will apply the RU patch 19.27 (37532350) on Windows OS. We'll also cover the common issues that can come up during patching on Windows, and how to work around them.

Prerequisites

  • Downtime required at the database end: approximately 120 minutes.
  • Minimum 15 GB free space required in the ORACLE_HOME mount point, plus an additional 25 GB for the patch download and the Oracle Home backup.
  • Download the RU patch and the required OPatch version from the links below:

Now let's start the patching, step by step.

Step 1: Run a Precheck

Before touching anything, capture the current patch state, component validity, and invalid object count, both at the CDB root and inside ORCLPDB. This gives you a baseline to confirm the patch applied cleanly once you're done. We also confirm no interim patches are currently installed in the Oracle Home.


SQL> def
DEFINE _DATE           = "03-SEP-25" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "orcl" (CHAR)
DEFINE _USER           = "SYS" (CHAR)
DEFINE _PRIVILEGE      = "AS SYSDBA" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1903000000" (CHAR)
DEFINE _EDITOR         = "Notepad" (CHAR)
DEFINE _O_VERSION      = "Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0" (CHAR)
DEFINE _O_RELEASE      = "1903000000" (CHAR)
SQL>
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO
SQL>
SQL> select name,db_unique_name,database_role,open_mode from v$database;

NAME      DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE
--------- ------------------------------ ---------------- --------------------
ORCL      orcl                           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.3.0.0.0


SQL> col ACTION_TIME for a20
SQL> col ACTION for a10
SQL> col STATUS for a10
SQL> col DESCRIPTION for a60
SQL> select patch_uid,patch_id,SOURCE_VERSION, TARGET_VERSION, action, status,action_time,description from dba_registry_sqlpatch;

no rows selected

SQL>  col comp_id for a10
SQL>  col version for a11
SQL>  col status for a10
SQL>  col comp_name for 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
RAC        Oracle Real Application Clusters      19.0.0.0.0  OPTION OFF
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
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=ORCLPDB;

Session altered.

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
RAC        Oracle Real Application Clusters      19.0.0.0.0  OPTION OFF
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
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

C:\Users\ABHISHEK-PC>cd D:\app\oracle\product\19c\db_home1
C:\Users\ABHISHEK-PC>D:
D:\app\oracle\product\19c\db_home1>cd OPatch
D:\app\oracle\product\19c\db_home1\OPatch>
D:\app\oracle\product\19c\db_home1\OPatch>opatch lspatches

There are no Interim patches installed in this Oracle Home "D:\app\oracle\product\19c\db_home1".

Step 2: Check the OPatch Version and Update It

The RU patch typically requires a newer OPatch version than what ships by default. Check the current version, then rename the existing OPatch folder aside so the new one can take its place.


D:\app\oracle\product\19c\db_home1\OPatch>opatch version
OPatch Version: 12.2.0.1.15

OPatch succeeded.

D:\app\oracle\product\19c\db_home1\OPatch>cd ..
D:\app\oracle\product\19c\db_home1>rename OPatch OPatch_bkp

With the old folder renamed, unzip the new OPatch package into ORACLE_HOME so it creates a fresh OPatch directory.

Unzipping the new OPatch version into ORACLE_HOME

Step 3: Verify the New OPatch Version


D:\app\oracle\product\19c\db_home1>cd OPatch
D:\app\oracle\product\19c\db_home1\OPatch>
D:\app\oracle\product\19c\db_home1\OPatch>opatch version
OPatch Version: 12.2.0.1.47

OPatch succeeded.

Step 4: Unzip the Patch

Unzip the RU patch itself into any folder of your choice. In this walkthrough, we unzip it into E:\Patch\.

Step 5: Run the Patch Conflict Precheck

Before applying anything, check whether the new patch conflicts with anything already installed in this Oracle Home.


D:\app\oracle\product\19c\db_home1\OPatch>opatch prereq CheckConflictAgainstOHWithDetail -ph E:\Patch\p37532350_190000_MSWIN-x86-64\37532350
Oracle Interim Patch Installer version 12.2.0.1.47
Copyright (c) 2025, Oracle Corporation.  All rights reserved.

PREREQ session

Oracle Home       : D:\app\oracle\product\19c\db_home1
Central Inventory : C:\Program Files\Oracle\Inventory
   from           :
OPatch version    : 12.2.0.1.47
OUI version       : 12.2.0.7.0
Log file location : D:\app\oracle\product\19c\db_home1\cfgtoollogs\opatch\opatch2025-09-03_14-54-20PM_1.log

Invoking prereq "checkconflictagainstohwithdetail"

Prereq "checkConflictAgainstOHWithDetail" passed.

OPatch succeeded.

D:\app\oracle\product\19c\db_home1\OPatch>

Step 6: Back Up the Oracle Home

Zip the entire ORACLE_HOME folder as a straightforward backup before patching begins. If anything goes wrong, this gives you a full rollback point.

Zipping the ORACLE_HOME folder as a pre-patch backup

Step 7: Stop the Database Services

Shut down the database cleanly from SQL*Plus, then make sure the corresponding Windows services are also stopped in services.msc. OPatch will refuse to proceed if any Oracle-related service is still running.


D:\app\oracle\product\19c\db_home1\OPatch>sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Sep 3 14:56:15 2025
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>

Service status in services.msc:

Oracle services listed in Windows Services.msc

Stop the services:

Stopping Oracle services before patching

Step 8: Apply the Patch

Open a command prompt with the Administrator option and run opatch apply against the extracted patch directory. This is the actual patching step, and it works through every affected component one by one.


C:\Windows\System32>cd D:\app\oracle\product\19c\db_home1\OPatch
C:\Windows\System32>D:
D:\app\oracle\product\19c\db_home1\OPatch>
D:\app\oracle\product\19c\db_home1\OPatch>opatch apply E:\Patch\p37532350_190000_MSWIN-x86-64\37532350
Oracle Interim Patch Installer version 12.2.0.1.47
Copyright (c) 2025, Oracle Corporation.  All rights reserved.
Oracle Home       : D:\app\oracle\product\19c\db_home1
Central Inventory : C:\Program Files\Oracle\Inventory
   from           :
OPatch version    : 12.2.0.1.47
OUI version       : 12.2.0.7.0
Log file location : D:\app\oracle\product\19c\db_home1\cfgtoollogs\opatch\opatch2025-09-03_15-03-59PM_1.log
Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   37532350
Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.
Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = 'D:\app\oracle\product\19c\db_home1')
Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...
Applying interim patch '37532350' to OH 'D:\app\oracle\product\19c\db_home1'
ApplySession: Optional component(s) [ oracle.tomcat.crs, 19.0.0.0.0 ] , [ oracle.has.deconfig, 19.0.0.0.0 ] , [ oracle.has.cfs, 19.0.0.0.0 ] , [ oracle.rdbms.tg4msql, 19.0.0.0.0 ] , [ oracle.rdbms.ic, 19.0.0.0.0 ] , [ oracle.rdbms.tg4ifmx, 19.0.0.0.0 ] , [ oracle.network.cman, 19.0.0.0.0 ] , [ oracle.tfa, 19.0.0.0.0 ] , [ oracle.network.gsm, 19.0.0.0.0 ] , [ oracle.assistants.asm, 19.0.0.0.0 ] , [ oracle.rhp.crs, 19.0.0.0.0 ] , [ oracle.has.cvu, 19.0.0.0.0 ] , [ oracle.wlm.dbwlm, 19.0.0.0.0 ] , [ oracle.rdbms.tg4sybs, 19.0.0.0.0 ] , [ oracle.usm, 19.0.0.0.0 ] , [ oracle.ons.daemon, 19.0.0.0.0 ] , [ oracle.rdbms.tg4tera, 19.0.0.0.0 ] , [ oracle.options.olap, 19.0.0.0.0 ] , [ oracle.assistants.usm, 19.0.0.0.0 ] , [ oracle.rdbms.tg4db2, 19.0.0.0.0 ] , [ oracle.options.olap.awm, 19.0.0.0.0 ] , [ oracle.has.crs, 19.0.0.0.0 ]  not present in the Oracle Home or a higher version is found.
Patching component oracle.has.common.cvu, 19.0.0.0.0...
Patching component oracle.has.rsf, 19.0.0.0.0...
Patching component oracle.assistants.server, 19.0.0.0.0...
Patching component oracle.ons, 19.0.0.0.0...
Patching component oracle.rdbms.plsql, 19.0.0.0.0...
Patching component oracle.rdbms.util, 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.sdo.locator.jrf, 19.0.0.0.0...
Patching component oracle.sqlplus, 19.0.0.0.0...
Patching component oracle.dbjava.jdbc, 19.0.0.0.0...
Patching component oracle.network.listener, 19.0.0.0.0...
Patching component oracle.odbc.ic, 19.0.0.0.0...
Patching component oracle.rdbms.rman, 19.0.0.0.0...
Patching component oracle.dbjava.ucp, 19.0.0.0.0...
Patching component oracle.ldap.rsf, 19.0.0.0.0...
Patching component oracle.precomp.common.core, 19.0.0.0.0...
Patching component oracle.oracore.rsf, 19.0.0.0.0...
Patching component oracle.ntoledb.odp_net_2, 19.0.0.0.0...
Patching component oracle.has.db, 19.0.0.0.0...
Patching component oracle.ntoramts, 19.0.0.0.0...
Patching component oracle.marvel, 19.0.0.0.0...
Patching component oracle.xdk.parser.java, 19.0.0.0.0...
Patching component oracle.network.client, 19.0.0.0.0...
Patching component oracle.blaslapack, 19.0.0.0.0...
Patching component oracle.perlint, 5.28.1.0.0...
Patching component oracle.tfa.db, 19.0.0.0.0...
Patching component oracle.ctx, 19.0.0.0.0...
Patching component oracle.rdbms.hsodbc, 19.0.0.0.0...
Patching component oracle.assistants.deconfig, 19.0.0.0.0...
Patching component oracle.ldap.owm, 19.0.0.0.0...
Patching component oracle.duma, 19.0.0.0.0...
Patching component oracle.precomp.lang, 19.0.0.0.0...
Patching component oracle.ntoledb, 19.0.0.0.0...
Patching component oracle.rdbms.rsf, 19.0.0.0.0...
Patching component oracle.rdbms.install.common, 19.0.0.0.0...
Patching component oracle.ldap.security.osdt, 19.0.0.0.0...
Patching component oracle.sdo, 19.0.0.0.0...
Patching component oracle.rdbms.rsf.ic, 19.0.0.0.0...
Patching component oracle.wwg.plsql, 19.0.0.0.0...
Patching component oracle.rdbms.lbac, 19.0.0.0.0...
Patching component oracle.oraolap, 19.0.0.0.0...
Patching component oracle.precomp.rsf, 19.0.0.0.0...
Patching component oracle.ntoledbolap, 19.0.0.0.0...
Patching component oracle.assistants.acf, 19.0.0.0.0...
Patching component oracle.javavm.server, 19.0.0.0.0...
Patching component oracle.precomp.common, 19.0.0.0.0...
Patching component oracle.network.rsf, 19.0.0.0.0...
Patching component oracle.ovm, 19.0.0.0.0...
Patching component oracle.install.deinstalltool, 19.0.0.0.0...
Patching component oracle.rdbms.oci, 19.0.0.0.0...
Patching component oracle.rsf, 19.0.0.0.0...
Patching component oracle.clrintg.ode_net_2, 19.0.0.0.0...
Patching component oracle.nlsrtl.rsf, 19.0.0.0.0...
Patching component oracle.ordim.server, 19.0.0.0.0...
Patching component oracle.rdbms.install.plugins, 19.0.0.0.0...
Patching component oracle.ctx.atg, 19.0.0.0.0...
Patching component oracle.javavm.client, 19.0.0.0.0...
Patching component oracle.rdbms.deconfig, 19.0.0.0.0...
Patching component oracle.dbjava.ic, 19.0.0.0.0...
Patching component oracle.rdbms.dv, 19.0.0.0.0...
Patching component oracle.aspnet_2, 19.0.0.0.0...
Patching component oracle.usm.deconfig, 19.0.0.0.0...
Patching component oracle.dbdev, 19.0.0.0.0...
Patching component oracle.ons.ic, 19.0.0.0.0...
Patching component oracle.mgw.common, 19.0.0.0.0...
Patching component oracle.xdk, 19.0.0.0.0...
Patching component oracle.oracler.server, 19.0.0.0.0...
Patching component oracle.has.common, 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.rdbms.dbscripts, 19.0.0.0.0...
Patching component oracle.rdbms.olap, 19.0.0.0.0...
Patching component oracle.rdbms, 19.0.0.0.0...
Patching component oracle.sdo.locator, 19.0.0.0.0...
Patching component oracle.rdbms.scheduler, 19.0.0.0.0...
Patching component oracle.xdk.xquery, 19.0.0.0.0...
Patching component oracle.jdk, 1.8.0.201.0...
Patch 37532350 successfully applied.
Log file location: D:\app\oracle\product\19c\db_home1\cfgtoollogs\opatch\opatch2025-09-03_15-03-59PM_1.log
OPatch succeeded.
D:\app\oracle\product\19c\db_home1\OPatch>

Step 9: Start the Database Services and Verify

Bring the services back up from services.msc, then confirm the database opens normally and the PDB comes up read-write.

Restarting Oracle services after patching in Services.msc

D:\app\oracle\product\19c\db_home1\OPatch>sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Sep 3 16:26:55 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> select name,open_mode from v$database;
NAME      OPEN_MODE
--------- --------------------
ORCL      READ WRITE
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO
SQL>

Step 10: Run datapatch to Update the SQL Patch Registry

Applying the binary patch with OPatch only handles the Oracle Home files. datapatch applies the corresponding SQL-level changes to the database and every open PDB, and registers the patch in dba_registry_sqlpatch.


D:\app\oracle\product\19c\db_home1\OPatch>datapatch -verbose
SQL Patching tool version 19.27.0.0.0 Production on Wed Sep  3 16:28:29 2025
Copyright (c) 2012, 2025, Oracle.  All rights reserved.
Log file for this invocation: D:\app\oracle\product\19c\db_home1\cfgtoollogs\sqlpatch\sqlpatch_9380_2025_09_03_16_28_29\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.27.0.0.0 Release_Update 250422102456: Installed
  PDB CDB$ROOT:
    No release update patches installed
  PDB ORCLPDB:
    No release update patches installed
  PDB PDB$SEED:
    No release update patches installed
Adding patches to installation queue and performing prereq checks...done
Installation queue:
  For the following PDBs: CDB$ROOT PDB$SEED ORCLPDB
    No interim patches need to be rolled back
    Patch 37532350 (Windows Database Bundle Patch : 19.27.0.0.250415 (37532350)):
      Apply from 19.1.0.0.0 Feature Release to 19.27.0.0.0 Release_Update 250422102456
    No interim patches need to be applied
Installing patches...
Patch installation complete.  Total patches installed: 3
Validating logfiles...done
Patch 37532350 apply (pdb CDB$ROOT): SUCCESS
  logfile: D:\app\oracle\product\19c\db_home1\cfgtoollogs\sqlpatch\37532350\26102912/37532350_apply_ORCL_CDBROOT_2025Sep03_16_38_01.log (no errors)
Patch 37532350 apply (pdb PDB$SEED): SUCCESS
  logfile: D:\app\oracle\product\19c\db_home1\cfgtoollogs\sqlpatch\37532350\26102912/37532350_apply_ORCL_PDBSEED_2025Sep03_16_55_10.log (no errors)
Patch 37532350 apply (pdb ORCLPDB): SUCCESS
  logfile: D:\app\oracle\product\19c\db_home1\cfgtoollogs\sqlpatch\37532350\26102912/37532350_apply_ORCL_ORCLPDB_2025Sep03_16_55_10.log (no errors)
SQL Patching tool complete on Wed Sep  3 17:09:35 2025
D:\app\oracle\product\19c\db_home1\OPatch>

Step 11: Perform the Post-Check

Compare the patch registry, component versions, and invalid object count against the Step 1 baseline. A matching dba_registry_sqlpatch entry, zero invalid objects, and opatch lsinventory confirming the patch as applied all together confirm the patching completed successfully.


D:\app\oracle\product\19c\db_home1\OPatch>sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Sep 3 17:17:22 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>
SQL> def
DEFINE _DATE           = "03-SEP-25" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "orcl" (CHAR)
DEFINE _USER           = "SYS" (CHAR)
DEFINE _PRIVILEGE      = "AS SYSDBA" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1927000000" (CHAR)
DEFINE _EDITOR         = "Notepad" (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>
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO
SQL>
SQL> set lines 333 pages 333
SQL> select name,db_unique_name,database_role,open_mode from v$database;
NAME      DB_UNIQUE_NAME                 DATABASE_ROLE    OPEN_MODE
--------- ------------------------------ ---------------- --------------------
ORCL      orcl                           PRIMARY          READ WRITE
SQL>
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> col ACTION_TIME for a20
SQL> col ACTION for a10
SQL> col STATUS for a10
SQL> col DESCRIPTION for 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
---------- ---------- --------------- --------------- ---------- ---------- -------------------- ------------------------------------------------------------
  26102912   37532350 19.1.0.0.0      19.27.0.0.0     APPLY      SUCCESS    03-SEP-25 04.54.27.5 Windows Database Bundle Patch : 19.27.0.0.250415 (37532350)
                                                                            83000 PM
SQL>  col comp_id for a10
SQL>  col version for a11
SQL>  col status for a10
SQL>  col comp_name for 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
RAC        Oracle Real Application Clusters      19.0.0.0.0  OPTION OFF
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
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=ORCLPDB;
Session altered.
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
RAC        Oracle Real Application Clusters      19.0.0.0.0  OPTION OFF
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
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
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.27.0.0.0

D:\app\oracle\product\19c\db_home1\OPatch>opatch.bat lspatches
37532350;Windows Database Bundle Patch : 19.27.0.0.250415 (37532350)

D:\app\oracle\product\19c\db_home1\OPatch>opatch lsinventory | findstr /i Applied
Patch  37532350     : applied on Wed Sep 03 15:51:34 IST 2025
D:\app\oracle\product\19c\db_home1\OPatch>

With that, we have successfully completed the RU 19.27 (37532350) patching on Windows.

Troubleshooting: Common Issues During Patching

Issue: OPatch Commands Fail Due to a Missing PATH Entry

On some Windows environments, OPatch commands that rely on findstr internally will fail with the following error:


D:\app\oracle\product\19c\db_home1\OPatch>opatch version
'findstr' is not recognized as an internal or external command,
operable program or batch file.
'findstr' is not recognized as an internal or external command,
operable program or batch file.
The syntax of the command is incorrect.
D:\app\oracle\product\19c\db_home1\OPatch>

This happens because C:\WINDOWS\system32, where findstr lives, isn't in the current session's PATH. Add it and retry:


D:\app\oracle\product\19c\db_home1\OPatch>set PATH=C:\WINDOWS\system32;%PATH%
D:\app\oracle\product\19c\db_home1\OPatch>opatch version
OPatch Version: 12.2.0.1.47

OPatch succeeded.
D:\app\oracle\product\19c\db_home1\OPatch>

Issue: Patch Apply Fails Because a Service Is Still Running

If OPatch detects that a service is still holding files open in the Oracle Home, you'll see an error like this:


[SEVERE]  OUI-67073:UtilSession failed: Prerequisite check "CheckActiveFilesAndExecutables" failed.
The details are:                                
Following active files/executables/libs are used by ORACLE_HOME :D:\app\oracle\product\19c\db_home1
D:\app\oracle\product\19c\db_home1\bin\oraocrutl19.dll
D:\app\oracle\product\19c\db_home1\bin\oraocrb19.dll

To fix this, make sure every Oracle-related service is stopped in services.msc. Occasionally a third-party application is still holding a handle on the Oracle Home even after that, in which case disabling the related services and restarting the server before retrying the patch is the more reliable fix. You can also disable and stop the services from the command line, as shown below. Make sure to note down each service's original start type before making any changes, and adjust the service names to match your own environment.


To check service details:
D:\app\oracle\product\19c\db_home1\OPatch>powershell -command "Get-Service | Where-Object { $_.Name -like 'Oracle*' } | Select Name, DisplayName, Status, StartType" Name DisplayName Status StartType ---- ----------- ------ --------- OracleJobSchedulerORCL OracleJobSchedulerORCL Stopped Disabled OracleOraDB19Home1TNSListener OracleOraDB19Home1TNSListener Running Automatic OracleRemExecServiceV2 OracleRemExecServiceV2 Stopped Manual OracleServiceORCL OracleServiceORCL Running Automatic OracleVssWriterORCL OracleVssWriterORCL Stopped Manual\ To disable the services:
sc config OracleJobSchedulerORCL start= disabled sc config OracleOraDB19Home1TNSListener start= disabled sc config OracleRemExecServiceV2 start= disabled sc config OracleServiceORCL start= disabled sc config OracleVssWriterORCL start= disabled To stop the services:
net stop OracleJobSchedulerORCL net stop OracleOraDB19Home1TNSListener net stop OracleRemExecServiceV2 net stop OracleServiceORCL net stop OracleVssWriterORCL To enable the services:
sc config OracleJobSchedulerORCL start= auto sc config OracleOraDB19Home1TNSListener start= auto sc config OracleRemExecServiceV2 start= auto sc config OracleServiceORCL start= auto sc config OracleVssWriterORCL start= auto To start the services:
net start OracleServiceORCL net start OracleOraDB19Home1TNSListener net start OracleJobSchedulerORCL net start OracleVssWriterORCL net start OracleRemExecServiceV2

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

↑