Sunday, April 19, 2026

Live Oracle Patching Demo 🚀 | GI Home, Oracle Home & Database | RU 19.17

GI Home patching:
=================
1) Stop GI Home as root user
/u01/app/19.0.0.0/grid/bin/crsctl stop has - HAS means standalone

2) Unlock the GI Home as root user 
/u01/app/19.0.0.0/grid/crs/install/roothas.sh -prepatch 

3) grant permission patch directory as root user
chown -R oracle:oinstall /u01/patches/19.17
chown -R grid:oinstall /u01/patches/19.17

4) As drid user do prechks 
su - oracle
cd /u01/app/19.0.0.0/grid/
mv OPatch OPatch_backup_20251208
cd /u01/patches/19.17
unzip p6880880_190000_Linux-x86-64.zip -d /u01/app/19.0.0.0/grid/

cd /u01/app/19.0.0.0/grid/
ls -ld OPatch
chown -R oracle:oinstall OPatch 
chown -R grid:oinstall OPatch 

/u01/app/19.0.0.0/grid/OPatch/opatch version

/u01/app/19.0.0.0/grid/OPatch/opatch lspatches
/u01/app/19.0.0.0/grid/OPatch/opatch lsinv |grep applied

Conflict pre checks:
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patches/19.17/34416665/34419443 -oh /u01/app/19.0.0.0/grid
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patches/19.17/34416665/34444834 -oh /u01/app/19.0.0.0/grid
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patches/19.17/34416665/34428761 -oh /u01/app/19.0.0.0/grid
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patches/19.17/34416665/34580338 -oh /u01/app/19.0.0.0/grid
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patches/19.17/34416665/33575402 -oh /u01/app/19.0.0.0/grid

system space prechk:
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckSystemSpace -phBaseDir /u01/patches/19.17/34416665/34419443 -oh /u01/app/19.0.0.0/grid
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckSystemSpace -phBaseDir /u01/patches/19.17/34416665/34444834 -oh /u01/app/19.0.0.0/grid
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckSystemSpace -phBaseDir /u01/patches/19.17/34416665/34428761 -oh /u01/app/19.0.0.0/grid
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckSystemSpace -phBaseDir /u01/patches/19.17/34416665/34580338 -oh /u01/app/19.0.0.0/grid
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckSystemSpace -phBaseDir /u01/patches/19.17/34416665/33575402 -oh /u01/app/19.0.0.0/grid

5) Apply Patch:
GI:
/u01/app/19.0.0.0/grid/OPatch/opatch apply -oh /u01/app/19.0.0.0/grid -local -silent /u01/patches/19.17/34416665/34419443
/u01/app/19.0.0.0/grid/OPatch/opatch apply -oh /u01/app/19.0.0.0/grid -local -silent /u01/patches/19.17/34416665/34444834
/u01/app/19.0.0.0/grid/OPatch/opatch apply -oh /u01/app/19.0.0.0/grid -local -silent /u01/patches/19.17/34416665/34428761
/u01/app/19.0.0.0/grid/OPatch/opatch apply -oh /u01/app/19.0.0.0/grid -local -silent /u01/patches/19.17/34416665/34580338
/u01/app/19.0.0.0/grid/OPatch/opatch apply -oh /u01/app/19.0.0.0/grid -local -silent /u01/patches/19.17/34416665/33575402

6) Post verification
/u01/app/19.0.0.0/grid/OPatch/opatch lspatches
/u01/app/19.0.0.0/grid/OPatch/opatch lsinv |grep applied

7) Lock and start GI as root user
/u01/app/19.0.0.0/grid/crs/install/roothas.sh -postpatch

/u01/app/19.0.0.0/grid/bin/crsctl check has
ps -ef|grep smon


DB Home patching:
=================
1) Stop DB Home as root user
ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1 /u01/app/oracle/product/19.0.0.0/dbhome_1/bin/srvctl stop home -o /u01/app/oracle/product/19.0.0.0/dbhome_1 -s /u01/patches/dbhome_1.state

--- stop DB
--- stop listener 
--- stop service 

2) grant permission on patch directory as root user
chown -R oracle:oinstall /u01/patches/19.17

3) As oracle user do prechks 
su - oracle
/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch version

cd /u01/app/oracle/product/19.0.0.0/dbhome_1
mv OPatch OPatch_backup_20251208
cd /u01/patches/19.17
unzip p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.0.0.0/dbhome_1

cd /u01/app/oracle/product/19.0.0.0/dbhome_1
chown -R oracle:oinstall OPatch 

/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch version

/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch lspatches
/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch lsinv |grep applied

Conflict pre checks:
/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patches/19.17/34416665/34419443 -oh /u01/app/oracle/product/19.0.0.0/dbhome_1
/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patches/19.17/34416665/34444834 -oh /u01/app/oracle/product/19.0.0.0/dbhome_1

system space prechk:
/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch prereq CheckSystemSpace -phBaseDir /u01/patches/19.17/34416665/34419443 -oh /u01/app/oracle/product/19.0.0.0/dbhome_1
/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch prereq CheckSystemSpace -phBaseDir /u01/patches/19.17/34416665/34444834 -oh /u01/app/oracle/product/19.0.0.0/dbhome_1

4) Apply Patch:
DB:
/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch apply -oh /u01/app/oracle/product/19.0.0.0/dbhome_1 -local -silent /u01/patches/19.17/34416665/34419443
/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch apply -oh /u01/app/oracle/product/19.0.0.0/dbhome_1 -local -silent /u01/patches/19.17/34416665/34444834

5) Post verification
/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch lspatches
/u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch lsinv |grep applied

6) Start ORACLE_HOME as root user
ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1 /u01/app/oracle/product/19.0.0.0/dbhome_1/bin/srvctl start home -o /u01/app/oracle/product/19.0.0.0/dbhome_1 -s /u01/patches/dbhome_1.state

---- start DBs
---- start listener 
---- start service 

Database Patching:
==================
1) Do database prechks

column comp_name format a40
column version format a12
column status format a15
select comp_name,version,status from dba_registry;

column owner format a15
column object_name format a40
column object_type format a20
select owner, object_name, object_type from dba_objects where status='INVALID' and owner like '%SYS%' order by object_type,owner,object_name;

@?/rdbms/admin/utlprp.sql 16

2) Run the database post steps

cd $ORACLE_HOME/OPatch
./datapatch -verbose

3) Verify the database post steps
set pagesize 1000;
set linesize 1000;
col STATUS for a10;
col ACTION_TIME format a30;
col DESCRIPTION format a55;
select PATCH_ID,status,ACTION_TIME,DESCRIPTION from dba_registry_sqlpatch;

column comp_name format a40
column version format a12
column status format a15
select comp_name,version,status from dba_registry;

column owner format a15
column object_name format a40
column object_type format a20
select owner, object_name, object_type from dba_objects where status='INVALID' and owner like '%SYS%' order by object_type,owner,object_name;

@?/rdbms/admin/utlprp.sql 16

Regards,
Mallikarjun / Vismo Technologies
WhatsApp: +91 9880616848 / +91 9036478079
Cell: +91 9880616848 / +91 9036478079
Email: mallikarjun.ramadurg@gmail.com / vismotechnologies@gmail.com

No comments:

Post a Comment

Oracle Patching Interview Questions 🚀 | GI, Oracle Home & Database

Lab1: OH ============= 1. Patch Oracle Home - OPatch Tool ------------------- done  2. Patch Database DEVDB - datapatch tool ---------------...