DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Related

  • Custom Model Context Protocol (MCP) for NL2SQL: A Rigorous Evaluation Framework on Oracle Database
  • Chat with Your Oracle Database: SQLcl MCP + GitHub Copilot
  • Understanding Bigfile Tablespace Defaults in Oracle Database 23ai: Impact and Benefits
  • Building a 3D WebXR Game with WASI Cycles: Integrating WasmEdge, Wasmtime, and Wasmer to Invoke MongoDB, Kafka, and Oracle

Trending

  • Migrate a Hardcoded LangGraph Agent to LaunchDarkly AI Configs in 20 Minutes
  • Building a Spring AI Assistant With MCP Servers: A Step-by-Step Tutorial
  • Stop Debugging Glue Jobs Manually: Building an Agentic Observability Layer for Data Pipelines
  • Securing the AI Host: Spring AI MCP Server Communication With API Keys
  1. DZone
  2. Data Engineering
  3. Databases
  4. Applying Oracle 19c Release Update (RU): A Practical Guide from My DBA Experience

Applying Oracle 19c Release Update (RU): A Practical Guide from My DBA Experience

Learn how to upgrade an Oracle 19c standalone database from 19.3 to 19.20 with a step-by-step guide covering preparation, patching, and validation.

By 
arvind toorpu user avatar
arvind toorpu
DZone Core CORE ·
Apr. 09, 26 · Tutorial
Likes (0)
Comment
Save
Tweet
Share
3.5K Views

Join the DZone community and get the full member experience.

Join For Free


After working with Oracle databases for more than 15 years, one thing I have learned is that patching is not just a maintenance task, it’s a critical security and stability practice. Many production issues I have seen in enterprise environments could have been avoided simply by keeping databases updated with the latest Release Updates (RUs).

In this article, I will walk through how I typically apply an Oracle 19c Release Update, upgrading a standalone database from 19.3 to 19.20, using a structured approach that I have followed in multiple production environments.

The entire patching process can be divided into three phases:

  • Pre-Patch Preparation
  • Patching Execution
  • Post-Patch Validation

Following this structured method significantly reduces risks during patching.

1. Pre-Patch Preparation

Before touching a production Oracle home, preparation is everything. Skipping preparation steps is where most patching failures happen.

Step 1: Verify Current Database Version

The first step I always take is confirming the current database version.

SQL
 
SELECT banner_full FROM v$version;

-- Example output:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0
Version 19.3.0.0.0


This confirms the starting patch level.

Step 2: Check Current Patch Level

Next, I verify which patches are already installed.

SQL
 
SELECT TO_CHAR(action_time,'YYYY-MM-DD') action_time,
       action,
       status,
       description,
       patch_id
FROM dba_registry_sqlpatch
ORDER BY action_time;

-- Example output shows the current RU applied:

Database Release Update : 19.3.0.0.190416


This helps me understand the patch history of the database. 

Step 3: Check Patches from OS Level

I also confirm patch details from the operating system using OPatch.

Shell
 
$ORACLE_HOME/OPatch/opatch lspatches

## Example:
29517242;Database Release Update : 19.3.0.0


This cross-verification avoids confusion between binary patching and SQL patching.

Step 4: Verify OPatch Version

Oracle frequently requires newer OPatch versions for newer patches.

Shell
 
./opatch version


Example output:

OPatch Version: 12.2.0.1.17

If necessary, I download the latest OPatch (patch 6880880) from Oracle Support.

Step 5: Download Required Patch

From Oracle Support → Patches & Updates, I download:

  • Latest OPatch
  • Target Release Update

Example RU:

Patch 35320081 → Oracle 19.20 RU

Step 6: Backup Oracle Home and Inventory

One of the golden rules I always follow:

Never patch without backups.

Backup Oracle Home:

Shell
 
tar -pcvf /u02/backups/backup.tar dbhome_1


Backup inventory:

Shell
 
cp -R inventory /u01/backup


Step 7: Backup Database

Before patching production databases, I always take a full RMAN backup.

SQL
 
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE
INCLUDE CURRENT CONTROLFILE PLUS ARCHIVELOG;


This ensures we can recover quickly if anything goes wrong. 

Step 8: Check for Invalid Objects

Invalid objects sometimes cause datapatch failures.

SQL
 
SELECT * FROM dba_objects WHERE status='INVALID';


If objects exist, I usually fix them before proceeding.

Step 9: Update OPatch Utility

Rename the old OPatch directory:

Shell
 
mv OPatch OPatch_backup


Then unzip the latest OPatch:

Shell
 
unzip p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME


Verify the version again:

Shell
 
./opatch version


Step 10: Run Patch Conflict Check

Before applying the patch, I always check for conflicts.

Shell
 
opatch prereq CheckConflictAgainstOHWithDetail -ph ./


This step confirms the patch can safely be applied to the Oracle home. 

2. Applying the Patch

Once all preparation steps are complete, I proceed with patching.

Step 1: Shutdown Database and Listener

SQL
 
sqlplus / as sysdba
shutdown immediate


Then stop the listener.

Step 2: Set OPatch Path

Shell
 
export PATH=$ORACLE_HOME/OPatch:$PATH


Verify:

Shell
 
which opatch


Step 3: Apply the Patch

Navigate to the patch directory and execute:

Shell
 
opatch apply
-- The system prompts for confirmation:
Do you want to proceed? [y|n]
Enter y to continue.


During execution, OPatch updates multiple Oracle components such as:

  • JDK
  • ODBC
  • Oracle middleware components
  • Precompiler libraries

Once completed, you should see:

Shell
 
OPatch succeeded


This confirms the binary patch has been successfully applied. 

3. Post-Patch Activities

The patching process isn’t finished until post-patch validation is completed.

Step 1: Verify Installed Patches

Shell
 
opatch lspatches

## Example output:

35320081;Database Release Update : 19.20.0.0


Step 2: Start Database and Listener

Shell
 
startup

lsnrctl start


Step 3: Verify Database Version

SQL
 
SELECT banner_full FROM v$version;

-- Example output:

Oracle Database 19c Enterprise Edition
Version 19.20.0.0.0


Step 4: Run Datapatch

This is a critical step many DBAs forget.

Shell
 
datapatch -verbose


Datapatch applies SQL changes associated with the binary patch. 

Step 5: Validate SQL Patch Registry

SQL
 
SELECT TO_CHAR(action_time,'YYYY-MM-DD') action_time,
       action,
       status,
       description,
       patch_id
FROM dba_registry_sqlpatch
ORDER BY action_time;


You should see the newly applied patch.

Step 6: Verify Invalid Objects

Finally, check for invalid objects again:

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


If any exist, compile them using:

Shell
 
@?/rdbms/admin/utlrp.sql


Lessons I’ve Learned from Patching Production Systems

Over the years, I’ve learned a few practical lessons:

✔ Always test patches in staging environments first

✔ Never skip Oracle Home backups

✔ Always run datapatch after binary patching

✔ Check invalid objects before and after patching

✔ Schedule patching during planned maintenance windows

A disciplined patching strategy keeps Oracle environments secure, stable, and supported.

Final Thoughts

Oracle continuously releases Release Updates (RUs) to address:

  • Security vulnerabilities
  • Performance improvements
  • Bug fixes

From my experience managing enterprise databases, staying current with patching is one of the simplest and most effective ways to prevent major production incidents. Over the years, I’ve seen several situations where systems ran into avoidable issues simply because critical patches were delayed or skipped. Small vulnerabilities or known bugs can become larger problems when databases are running on older patch levels.

A well-planned patching strategy ensures your databases remain secure, performant, and fully supported by Oracle. Security patches address newly discovered vulnerabilities that could otherwise expose sensitive data or allow unauthorized access. In today’s environment, where databases often store critical business information, staying on top of these updates is essential.

Patching also improves overall stability and performance. Oracle regularly fixes bugs, improves internal components, and resolves issues reported by customers in real-world environments. Applying these fixes helps avoid unexpected behavior, performance slowdowns, or system crashes that could affect business operations.

Another important factor is supportability. When a production issue occurs, Oracle Support typically expects the environment to be on a reasonably current patch level. If the system is far behind, troubleshooting can become more complicated, and in some cases, support may first recommend applying the latest patches before deeper investigation.

The key is to approach patching in a controlled and predictable way. Maintain a regular patching schedule, test patches in lower environments, and coordinate maintenance windows with application teams. This approach minimizes risk while keeping the database environment stable and secure. In the long run, consistent patching saves far more time and effort than dealing with preventable production problems.

Database Oracle Database Patch (computing) Release (computing)

Opinions expressed by DZone contributors are their own.

Related

  • Custom Model Context Protocol (MCP) for NL2SQL: A Rigorous Evaluation Framework on Oracle Database
  • Chat with Your Oracle Database: SQLcl MCP + GitHub Copilot
  • Understanding Bigfile Tablespace Defaults in Oracle Database 23ai: Impact and Benefits
  • Building a 3D WebXR Game with WASI Cycles: Integrating WasmEdge, Wasmtime, and Wasmer to Invoke MongoDB, Kafka, and Oracle

Partner Resources

×

Comments

The likes didn't load as expected. Please refresh the page and try again.

  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook