How to Patch Oracle 19c to Release 19.29 – A Complete Step-by-Step Guide
Environment: Oracle 19c on Linux x86-64 (same process applies to all 19c versions)
Solution: Download patch 38291812 from Oracle Support, update OPatch, apply the patch, and run datapatch to register it in the database.
I recently had to patch one of my Oracle 19c databases from 19.28 to 19.29. Since this is something we DBAs do every few months, I decided to write down the exact steps I followed. The procedures are the same for all 19c versions.
Note: On production systems, always apply on test/dev first. Never patch production directly without testing!
Prerequisites
- Oracle 19c database installed on Linux x86-64
- Access to Oracle Support (MOS account)
- OS user with ORACLE_HOME and ORACLE_BASE permissions
- At least 12 GB free disk space in /home
- WinSCP or similar tool to transfer files to the server
- Scheduled maintenance window (database downtime required)
Step 1: Download the Patch and OPatch Utility
Log in to Oracle Support and download the following:
- Patch file: 38291812 →
p38291812_190000_Linux-x86-64.zip - OPatch utility: 6880880 →
p6880880_190000_Linux-x86-64.zip
Steps to download: Select Patches & Updates → enter patch number → select platform Linux x86-64 → download both files and review the README.
Step 2: Check and Update OPatch
On the server, check your current OPatch version:
cd $ORACLE_HOME/OPatch
./opatch version
You need version 12.2.0.1.48 or higher. If it's older, update it:
mv OPatch OPatch_backup1
cp p6880880_190000_Linux-x86-64.zip $ORACLE_HOME
cd $ORACLE_HOME
unzip p6880880_190000_Linux-x86-64.zip
Update your .bash_profile so OPatch is available globally:
vi /home/oracle/.bash_profile
Add this line:
PATH=$ORACLE_HOME/OPatch:$PATH
Save and reload:
:wq
. ~/.bash_profile
Step 3: Prepare the Patch Directory
mkdir /home/oracle/patch
chmod -R 777 /home/oracle/patch
Transfer both ZIP files (Patch + OPatch) to /home/oracle/patch using WinSCP or SCP.
Step 4: Unzip the Patch
cd /home/oracle/patch
unzip p38291812_190000_Linux-x86-64.zip
cd 38291812
Step 5: Run Pre-checks
Before applying the patch, check for conflicts with existing patches:
./opatch prereq CheckConflictAgainstOHWithDetail -ph ./
If you see "OPatch succeeded" — you're good to go. If there are conflicts, resolve them before proceeding.
Step 6: Stop the Database and Listener
sqlplus / as sysdba
SQL> shutdown immediate
SQL> exit
lsnrctl stop
Verify all services are completely down before moving to the next step.
Step 7: Clean Up Inactive Patches (Optional but Recommended)
This frees up Oracle Home space before applying the new patch:
cd $ORACLE_HOME/OPatch
./opatch util listOrderedInactivePatches
./opatch util deleteInactivePatches
Step 8: Check Available Disk Space
You'll need at least 12 GB free in /home:
df -h
Do not proceed if space is insufficient — the patch will fail midway.
Step 9: Apply the Patch
cd /home/oracle/patch/38291812
./opatch apply
Watch the output carefully. You should see success messages for each component. The full process typically takes 10–20 minutes.
Sample successful output at the end:
Patching component oracle.rdbms, 19.0.0.0.0...
Verifying the update...
Patch 38291812 successfully applied.
OPatch succeeded.
Step 10: Start the Database and Run DataPatch
Start the database first:
sqlplus / as sysdba
SQL> startup
Then run DataPatch to register the patch inside the database dictionary:
cd $ORACLE_HOME/OPatch
./datapatch -verbose
This step is mandatory — without it the patch is applied at the binary level but not registered in the database.
Step 11: Verify the Patch
SQL> select * from v$version;
SQL> select patch_id, patch_uid, version, action, status, description
from dba_registry_sqlpatch
order by action_time;
You should see 19.29.0.0.0 listed in the output with status SUCCESS.
- Downloaded patch 38291812 and updated OPatch to 12.2.0.1.48+
- Ran pre-checks to confirm no patch conflicts
- Shut down database and listener cleanly
- Applied the patch using
opatch apply - Ran
datapatch -verboseto register the patch in the database - Verified patch version shows 19.29.0.0.0 in
dba_registry_sqlpatch
Final Tips
- In Data Guard setups — always patch the standby first, then the primary
- Never patch production directly — test on a non-prod clone first
- Always read the patch README before applying — it may have special instructions
- Keep the OPatch backup (
OPatch_backup1) until you've verified the patch successfully
Related posts:
Love is not as easy as people make it look like and in love commitment is key, commitment reveals who is true and who is not, I fell in love with the wrong one who was not committed, who did not to sacrifice for what we had, I was lied to and played on, I was seeing the signs but was not sure what it was until my sister told me about Mac and his team (macprivateinvestigators @ gmail .com) who helped expose my husband and all his secrets on how he was involved with other women, the evidence provided made the divorce case easy for me, now I feel free.
ReplyDelete