TECHNICAL IMPLEMENTATION GUIDE
|
ORACLE
DATABASE 19c RELEASE
UPDATE 19.30 Patch Implementation on Linux A practical, step-by-step
guide based on a live development environment implementation. |
HANDS-ON IMPLEMENTATION: Oracle Database 19c — Release Update 19.30
Oracle Database Administration
| Linux |
Patch Management
Apply Oracle 19c Patch 19.30 on Linux
Prerequisites
Before applying the Oracle 19c Patch 19.30, ensure:
●
Oracle
Home path is set correctly.
●
The
database is running.
●
Backup of
the database and Oracle Home is taken.
●
Latest
OPatch version (12.2.0.1.40 or higher) installed.
●
Sufficient
disk space available.
Step
1: Download the Required Patches
●
Oracle
19.30 Database RU Patch
●
OJVM Patch
(optional but recommended)
Current Database Version
In our case, we just install oracle 19c base version 19.3.0.0.0
only, and we will apply the latest patch on it.
|
PATCH_ID
ACTION_TIME
SOURCE_VERSION TARGET_VERSION STATUS DESCRIPTION ----------------------------------------------------------------------------------- 29517242
29-MAR-26 01.17.15.506159 PM
19.1.0.0.0 19.3.0.0.0 SUCCESS Database
Release Update : 19.3.0.0.190416 (29517242) |
Update OPatch Version
Unzip the OPatch inside the Oracle home directory, but before it
take backup of the old OPatch directory.
|
[oracle@ardb
dbhome_1]$ unzip p6880880_190000_1220146_Linux-x86-64_2.zip |
Check OPatch Version now:
|
[oracle@ardb
OPatch]$ ./opatch version OPatch
Version: 12.2.0.1.46 OPatch
succeeded. |
Step
2: Prepare Patch Directory
|
Patches]$
mkdir -p Patches Patches]$
cd Patches Patches]$
unzip p37642901_190000_1927_DB_Linux-x86-64_2.zip |
Step
3: Stop Database and Listener
|
sqlplus
/ as sysdba SHUTDOWN
IMMEDIATE; EXIT; lsnrctl
stop |
Step
4: Check Current Patch Level
|
[oracle@Primary
~]$ cd $ORACLE_HOME/OPatch [oracle@Primary
OPatch]$ ./opatch lspatches 29585399;OCW
RELEASE UPDATE 19.3.0.0.0 (29585399) 29517242;Database
Release Update : 19.3.0.0.190416 (29517242) OPatch
succeeded. [oracle@Primary
OPatch]$ |
Step
5: Run Conflict Check
|
[oracle@goldstardb
37642901]$ pwd /u01/Patches/37642901 [oracle@goldstardb
37642901]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail
-phBaseDir . Oracle
Interim Patch Installer version 12.2.0.1.46 Copyright
(c) 2026, Oracle Corporation. All
rights reserved. PREREQ
session Oracle
Home :
/u01/app/oracle/product/19.3.0/dbhome_1 Central
Inventory : /u01/app/oraInventory from :
/u01/app/oracle/product/19.3.0/dbhome_1/oraInst.loc OPatch
version : 12.2.0.1.46 OUI
version : 12.2.0.7.0 Log
file location :
/u01/app/oracle/product/19.3.0/dbhome_1/cfgtoollogs/opatch/opatch2026-04-30_14-06-29PM_1.log Invoking
prereq "checkconflictagainstohwithdetail" Prereq
"checkConflictAgainstOHWithDetail" passed. OPatch
succeeded. [oracle@goldstardb
37642901]$ |
|
$ORACLE_HOME/OPatch/opatch
prereq CheckConflictAgainstOHWithDetail -phBaseDir . |
Step
6: Apply the Patch
|
cd
/u01/Patches/37642901 $ORACLE_HOME/OPatch/opatch
apply |
|
[oracle@ardb
38632161]$ $ORACLE_HOME/OPatch/opatch apply Oracle
Interim Patch Installer version 12.2.0.1.49 Copyright
(c) 2026, Oracle Corporation. All rights reserved. Oracle
Home : /u01/app/oracle/product/19.3.0/dbhome_1 Central
Inventory : /u01/app/oraInventory from :
/u01/app/oracle/product/19.3.0/dbhome_1/oraInst.loc OPatch
version : 12.2.0.1.49 OUI
version : 12.2.0.7.0 Log
file location : /u01/app/oracle/product/19.3.0/dbhome_1/cfgtoollogs/opatch/opatch2026-03-24_22-01-53PM_1.log Verifying
environment and performing prerequisite checks... OPatch
continues with these patches: 38632161 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 = '/u01/app/oracle/product/19.3.0/dbhome_1') Is
the local system ready for patching? [y|n] |
|
Note:
Before applying the patch, disable all custom SYS triggers. Otherwise, you
will get an error. |
Step
7: Run Datapatch
Start the database first:
|
sqlplus
/ as sysdba STARTUP; EXIT; |
Then run:
|
$ORACLE_HOME/OPatch/datapatch
-verbose |
Output:
|
[oracle@tardb
~]$ $ORACLE_HOME/OPatch/datapatch -verbose SQL
Patching tool version 19.30.0.0.0 Production on Wed Apr 29 23:38:23 2026 Copyright
(c) 2012, 2026, Oracle. All rights reserved. Log
file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_21179_2026_04_24_23_38_23/sqlpatch_invocation.log Connecting
to database...OK Gathering
database info...done 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.30.0.0.0 Release_Update 260126024251:
Installed SQL registry: No release update patches installed Adding
patches to installation queue and performing prereq checks...done Installation
queue: No interim patches need to be rolled back Patch 38632161 (Database Release Update :
19.30.0.0.260120(REL-JAN260130) (38632161)): Apply from 19.1.0.0.0 Feature Release to
19.30.0.0.0 Release_Update 260126024251 No interim patches need to be applied Installing
patches... Patch
installation complete. Total patches installed: 1 Validating
logfiles...done Patch
38632161 apply: SUCCESS logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/38632161/28482211/38632161_apply_INFODB_2026Mar24_23_39_39.log
(no errors) SQL
Patching tool complete on Wed Apr 29 23:51:03 2026 |
If you get any error and want to filter all errors, run the
following command:
|
grep
-n "ORA-" \ /u01/app/oracle/cfgtoollogs/sqlpatch/37642901/27123174/37642901_apply_GSTARDB_GSTARPDB1_2026Apr28_17_21_03.log |
Run datapatch -verbose to ignore errors if you get any:
|
./datapatch
-ignorable_errors=ORA-01403,ORA-06512 Or cd
$ORACLE_HOME/OPatch ./datapatch
-verbose -pdbs GSTPDB1 -ignorable_errors=ORA-01403,ORA-06512 |
Step
8: Restart Listener
|
lsnrctl
start |
Step
9: Verify Patch Applied
|
$ORACLE_HOME/OPatch/opatch
lspatches |
Output:
|
[oracle@stardb
~]$ $ORACLE_HOME/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. |
Also, verify in the database:
|
set
lin 300 pagesize 300 col
ACTION_TIME for a30 col
STATUS for a12 col
DESCRIPTION for a44 SELECT
* FROM dba_registry_sqlpatch; OR select
PATCH_ID,ACTION_TIME,SOURCE_VERSION,TARGET_VERSION,STATUS,DESCRIPTION FROM
dba_registry_sqlpatch; |
Output like:
|
SQL>
select PATCH_ID,ACTION_TIME,SOURCE_VERSION,TARGET_VERSION,STATUS,DESCRIPTION
FROM dba_registry_sqlpatch; PATCH_ID
ACTION_TIME
SOURCE_VERSION TARGET_VERSION STATUS
DESCRIPTION ------------------------------------------------------------------------------------------- 29517242
04-DEC-23 09.44.05.491773 PM
19.1.0.0.0 19.3.0.0.0 SUCCESS
Database Release Update : 19.3.0.0.190416 (29517242) 37642901
28-APR-26 03.46.43.520484 PM
19.3.0.0.0 19.27.0.0.0 SUCCESS
Database Release Update : 19.27.0.0.250415 (37642901) |