User Tools

Site Tools


applying_patches

I find it easier to click the “Recommended Patch Advisor” tab and fill in the 3 fields. This will then find all relevant patches.

  • After choosing the correct product, release and platform, click on the desired patch.
  • Click on and read the README to understand if there are any special circumstances.
  • Click on Download to download the patch.
  • Copy the zip file to a place accessible to the server to be patched. Could be directly to the server, an NFS mount etc.
  • If the patch is for a Grid Infrastructure ORACLE_HOME as well as a database ORACLE_HOME, the patch commands must be run as root.

If only a database ORACLE_HOME is patched, it will be run as the software owner (eg. oracle).

Patching both Grid and database ORACLE_HOMEs at the same time

When applying the 180718 PSU to both Grid and database infrastructure, the patch application log (<tt>/u01/app/oracle/product/11.2.0.4/grid/cfgtoollogs/opatch/opatch_history.txt</tt>) showed up the following commands:

opatch query -get_patch_type /oracle/Patches/27967757/27734982 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc
opatch query -get_patch_type /oracle/Patches/27967757/27441052 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc
opatch query -get_patch_type /oracle/Patches/27967757/27959254 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc

opatch util saveconfigurationsnapshot -configFile /u01/app/oracle/product/11.2.0.4/grid/cfgtoollogs/opatchauto2018-10-17_12-00-03.cfg.log -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc

opatch util checkMinimumOPatchVersion -ph /oracle/Patches/27967757/27734982 -version 11.2.0.3.6 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc
opatch util checkMinimumOPatchVersion -ph /oracle/Patches/27967757/27441052 -version 11.2.0.3.6 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc
opatch util checkMinimumOPatchVersion -ph /oracle/Patches/27967757/27959254 -version 11.2.0.3.6 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc

opatch prereq CheckComponents -ph /oracle/Patches/27967757/27734982 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc
opatch prereq CheckComponents -ph /oracle/Patches/27967757/27441052 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc
opatch prereq CheckComponents -ph /oracle/Patches/27967757/27959254 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc

opatch prereq CheckConflictAgainstOH -ph /oracle/Patches/27967757/27734982 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc
opatch prereq CheckConflictAgainstOH -ph /oracle/Patches/27967757/27441052 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc
opatch prereq CheckConflictAgainstOH -ph /oracle/Patches/27967757/27959254 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc

opatch prereq CheckApplicable -ph /oracle/Patches/27967757/27734982 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc
opatch prereq CheckApplicable -ph /oracle/Patches/27967757/27441052 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc
opatch prereq CheckApplicable -ph /oracle/Patches/27967757/27959254 -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc

opatch napply /oracle/Patches/27967757/27734982 -local -silent -ocmrf /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/ocm/bin/ocm.rsp -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc
opatch napply /oracle/Patches/27967757/27441052 -local -silent -ocmrf /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/ocm/bin/ocm.rsp -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc
opatch napply /oracle/Patches/27967757/27959254 -local -silent -ocmrf /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/ocm/bin/ocm.rsp -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc

opatch lspatches -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc

opatch log report

Shows the steps involved in patching Grid and database ORACLE_HOMEs in auto mode.

/u01/app/oracle/product/11.2.0.4/grid/cfgtoollogs> cat opatchauto2018-10-17_12-00-03.report.log
          * ******  Configuration Data  ***********
  *  It shows only those targets that will be patched in this session *


crs_home=/u01/app/oracle/product/11.2.0.4/grid      owner=oracle      opatch_ver=11.2.0.3.6
rac_home=/u01/app/oracle/product/11.2.0.4/dbhome_1      owner=oracle      opatch_ver=11.2.0.3.6

          * ****** Steps to be executed as owner unless specified as root ***********


1: /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch prereq CheckComponents -ph /oracle/Patches/27967757/27734982 -oh /u01/app/oracle/product/11.2.0.4/dbhome_1

2: /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch prereq CheckComponents -ph /oracle/Patches/27967757/27441052/custom/server/27441052 -oh /u01/app/oracle/product/11.2.0.4/dbhome_1

3: /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch prereq CheckConflictAgainstOH -ph /oracle/Patches/27967757/27734982 -oh /u01/app/oracle/product/11.2.0.4/dbhome_1

4: /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch prereq CheckConflictAgainstOH -ph /oracle/Patches/27967757/27441052/custom/server/27441052 -oh /u01/app/oracle/product/11.2.0.4/dbhome_1

5: /u01/app/oracle/product/11.2.0.4/grid/OPatch/opatch prereq CheckComponents -ph /oracle/Patches/27967757/27734982 -oh /u01/app/oracle/product/11.2.0.4/grid

6: /u01/app/oracle/product/11.2.0.4/grid/OPatch/opatch prereq CheckComponents -ph /oracle/Patches/27967757/27441052 -oh /u01/app/oracle/product/11.2.0.4/grid

7: /u01/app/oracle/product/11.2.0.4/grid/OPatch/opatch prereq CheckComponents -ph /oracle/Patches/27967757/27959254 -oh /u01/app/oracle/product/11.2.0.4/grid

8: /u01/app/oracle/product/11.2.0.4/grid/OPatch/opatch prereq CheckConflictAgainstOH -ph /oracle/Patches/27967757/27734982 -oh /u01/app/oracle/product/11.2.0.4/grid

9: /u01/app/oracle/product/11.2.0.4/grid/OPatch/opatch prereq CheckConflictAgainstOH -ph /oracle/Patches/27967757/27441052 -oh /u01/app/oracle/product/11.2.0.4/grid

10: /u01/app/oracle/product/11.2.0.4/grid/OPatch/opatch prereq CheckConflictAgainstOH -ph /oracle/Patches/27967757/27959254 -oh /u01/app/oracle/product/11.2.0.4/grid

11: /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/emctl stop dbconsole

12: /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/emctl stop agent

13: /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch prereq CheckApplicable -ph /oracle/Patches/27967757/27734982 -oh /u01/app/oracle/product/11.2.0.4/dbhome_1

14: /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch prereq CheckApplicable -ph /oracle/Patches/27967757/27441052/custom/server/27441052 -oh /u01/app/oracle/product/11.2.0.4/dbhome_1

15: /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/srvctl stop home -o /u01/app/oracle/product/11.2.0.4/dbhome_1 -s /u01/app/oracle/product/11.2.0.4/dbhome_1/srvm/admin/stophome.txt

16: /oracle/Patches/27967757/27441052/custom/server/27441052/custom/scripts/prepatch.sh -dbhome /u01/app/oracle/product/11.2.0.4/dbhome_1

17: /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch napply /oracle/Patches/27967757/27734982 -local -silent -ocmrf /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/ocm/bin/ocm.rsp -oh /u01/app/oracle/product/11.2.0.4/dbhome_1 -invPtrLoc /u01/app/oracle/product/11.2.0.4/dbhome_1/oraInst.loc

18: /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/opatch napply /oracle/Patches/27967757/27441052/custom/server/27441052 -local -silent -ocmrf /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/ocm/bin/ocm.rsp -oh /u01/app/oracle/product/11.2.0.4/dbhome_1 -invPtrLoc /u01/app/oracle/product/11.2.0.4/dbhome_1/oraInst.loc

19: /oracle/Patches/27967757/27441052/custom/server/27441052/custom/scripts/postpatch.sh -dbhome /u01/app/oracle/product/11.2.0.4/dbhome_1

20: /u01/app/oracle/product/11.2.0.4/grid/crs/install/roothas.pl -unlock : run as root

21: /sbin/fuser -k /u01/app/oracle/product/11.2.0.4/grid/bin/crsctl.bin : run as root

22: /u01/app/oracle/product/11.2.0.4/grid/OPatch/opatch prereq CheckApplicable -ph /oracle/Patches/27967757/27734982 -oh /u01/app/oracle/product/11.2.0.4/grid

23: /u01/app/oracle/product/11.2.0.4/grid/OPatch/opatch prereq CheckApplicable -ph /oracle/Patches/27967757/27441052 -oh /u01/app/oracle/product/11.2.0.4/grid

24: /u01/app/oracle/product/11.2.0.4/grid/OPatch/opatch prereq CheckApplicable -ph /oracle/Patches/27967757/27959254 -oh /u01/app/oracle/product/11.2.0.4/grid

25: /u01/app/oracle/product/11.2.0.4/grid/OPatch/opatch napply /oracle/Patches/27967757/27734982 -local -silent -ocmrf /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/ocm/bin/ocm.rsp -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc

26: /u01/app/oracle/product/11.2.0.4/grid/OPatch/opatch napply /oracle/Patches/27967757/27441052 -local -silent -ocmrf /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/ocm/bin/ocm.rsp -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc

27: /u01/app/oracle/product/11.2.0.4/grid/OPatch/opatch napply /oracle/Patches/27967757/27959254 -local -silent -ocmrf /u01/app/oracle/product/11.2.0.4/dbhome_1/OPatch/ocm/bin/ocm.rsp -oh /u01/app/oracle/product/11.2.0.4/grid -invPtrLoc /u01/app/oracle/product/11.2.0.4/grid/oraInst.loc

28: /u01/app/oracle/product/11.2.0.4/grid/bin/emctl start dbconsole

29: /u01/app/oracle/product/11.2.0.4/grid/rdbms/install/rootadd_rdbms.sh : run as root

30: /u01/app/oracle/product/11.2.0.4/grid/crs/install/roothas.pl -patch : run as root

31: /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/emctl start dbconsole

32: /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/emctl start agent

33: /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/srvctl start home -o /u01/app/oracle/product/11.2.0.4/dbhome_1 -s /u01/app/oracle/product/11.2.0.4/dbhome_1/srvm/admin/stophome.txt

Opatch

As Oracle software owner:

export ORACLE_BASE=/oracle/product
export PATH=$ORACLE_HOME/OPatch/bin:$PATH

Get the patch zip file and unzip it to the OPatch directory

cd /oracle/stage/112_64/11203
oracle@solax042:/oracle/stage/112_64/11203> ll
total 15232
drwxr-xr-x   12 oracle   dba            1024 May 04 00:49 .
drwxrwxr-x   11 oracle   dba            1024 Jun 25 17:38 ..
drwxr-xr-x    4 oracle   oinstall        512 Jan 13 2012  13443029
drwxr-xr-x    4 oracle   oinstall        512 May 21 2012  13947840
drwxrwxr-x   29 oracle   oinstall       1024 Dec 27 2012  14841409
drwxrwxr-x   33 oracle   oinstall       1024 Mar 20 08:52 16294378
oracle@solax042:/oracle/stage/112_64/11203> cp -rp 16294378 $ORACLE_HOME/OPatch
oracle@solax042:/oracle/stage/112_64/11203> cd $ORACLE_HOME/OPatch

Test the patch installation

oracle@solax042:/oracle/product/11.2.0.3/OPatch> cd 16294378
oracle@solax042:/oracle/product/11.2.0.3/OPatch/16294378> opatch napply -skip_subset -skip_duplicate -report -invPtrLoc $ORACLE_BASE/oraInst.loc
Invoking OPatch 11.2.0.1.7
...

Install the patch for real

oracle@solax042:/oracle/product/11.2.0.3/OPatch/16294378> opatch napply -skip_subset -skip_duplicate -invPtrLoc $ORACLE_BASE/oraInst.loc
...
Patching component oracle.rdbms, 11.2.0.3.0...

Patching component oracle.rdbms.rsf, 11.2.0.3.0...
Applying interim patch '16314467' to OH '/oracle/product/11.2.0.3'
ApplySession: Optional component(s) [[ oracle.network.cman, 11.2.0.3.0 ]]  not present in the Oracle Home or a higher version is found.

Patching component oracle.network.listener, 11.2.0.3.0...

Patching component oracle.network.rsf, 11.2.0.3.0...

Patching component oracle.rdbms, 11.2.0.3.0...

Patching component oracle.rdbms.rsf, 11.2.0.3.0...
Applying interim patch '16314468' to OH '/oracle/product/11.2.0.3'

Patching component oracle.ovm, 11.2.0.3.0...
Applying interim patch '16314469' to OH '/oracle/product/11.2.0.3'

Patching component oracle.rdbms, 11.2.0.3.0...
Applying interim patch '16314470' to OH '/oracle/product/11.2.0.3'

Patching component oracle.sdo.locator, 11.2.0.3.0...
Patches 13742433,13742434,13742435,13742436,13742438,13742464,14062792,14062794,14062795,14062796,14062797,14480674,14480675,14480676,14548763,14664355,15862016,15862017,15862018,15862019,15862020,15862021,15862022,15862023,15862024,16294378,16314466,16314467,16314468,16314469,16314470 successfully applied.
Log file location: /oracle/product/11.2.0.3/cfgtoollogs/opatch/opatch2013-07-12_17-45-41PM.log

OPatch succeeded.

Applying a one-off patch in version 19.17

# ======================================
# stop all listeners in this ORACLE_HOME
# ======================================
lsnrctl stop LSNR_HN481_1521
lsnrctl stop LSNR_HN481_1525
lsnrctl stop LSNR_HN481_3527
lsnrctl stop LSNR_HN481_3529
lsnrctl stop LSNR_HN481_3531

# this doesn't work
export SID_LIST=$(awk -F: ' {{$2 ~ /19.17/} print $1}' /etc/oratab|grep -Ev "OH19")

# ======================================
# stop all databases in this ORACLE_HOME
# ======================================
export SID_LIST=$(grep '19\.17' /etc/oratab|awk -F: '{print $1}')
for ORACLE_SID in ${SID_LIST}; do
    cat <<EOCAT>"/tmp/patch_databases_stop_db_${ORACLE_SID}.ksh"
#!/usr/bin/env ksh
ORAENV_ASK=NO
ORACLE_SID="${ORACLE_SID}"
. oraenv >/dev/null
[[ "\$?" -ne 0 ]] && echo "ERROR: Cannot set environment for \${ORACLE_SID}" && exit 1
echo "create pfile from spfile;"|sqlplus -s / as sysdba
echo "shutdown immediate;"|sqlplus -s / as sysdba
rm -f /tmp/patch_databases_stop_db_${ORACLE_SID}.ksh
EOCAT
    chmod 744 "/tmp/patch_databases_stop_db_${ORACLE_SID}.ksh"
    echo "Logging /tmp/patch_databases_stop_db_${ORACLE_SID}.ksh to /tmp/patch_databases_stop_db_${ORACLE_SID}.log"
    ksh "/tmp/patch_databases_stop_db_${ORACLE_SID}.ksh" >"/tmp/patch_databases_stop_db_${ORACLE_SID}.log" &
done
echo "INFO: Waiting for all the instances to shutdown..."
wait


# ======================================
# apply the patch
# ======================================
mkdir "${ORACLE_HOME}/Patches/32727143"
cd "${ORACLE_HOME}/Patches/32727143"
unzip /oracle/Patches/p32727143_1917000DBRU_AIX64-5L.zip -d ./
cd "32727143"
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch lsinventory >"${ORACLE_HOME}/Patches/32727143/lsinventory.before"
opatch apply
opatch lsinventory >"${ORACLE_HOME}/Patches/32727143/lsinventory.after"

# =======================================
# start all databases in this ORACLE_HOME
# =======================================
cd "${ORACLE_HOME}"
export SID_LIST=$(grep '19\.17' /etc/oratab|awk -F: '{print $1}')
for ORACLE_SID in ${SID_LIST}; do
    cat <<EOCAT>"/tmp/patch_databases_start_db_${ORACLE_SID}.ksh"
#!/usr/bin/env ksh
ORAENV_ASK=NO
ORACLE_SID="${ORACLE_SID}"
. oraenv >/dev/null
[[ "\$?" -ne 0 ]] && echo "ERROR: Cannot set environment for \${ORACLE_SID}" && exit 1
cd "\${ORACLE_HOME}"
echo "startup;"|sqlplus -s / as sysdba
rm /tmp/patch_databases_start_db_${ORACLE_SID}.ksh
EOCAT
    chmod 744 "/tmp/patch_databases_start_db_${ORACLE_SID}.ksh"
    echo "Logging /tmp/patch_databases_start_db_${ORACLE_SID}.ksh to /tmp/patch_databases_start_db_${ORACLE_SID}.log"
    ksh "/tmp/patch_databases_start_db_${ORACLE_SID}.ksh" >"/tmp/patch_databases_start_db_${ORACLE_SID}.log" &
done
echo "INFO: Waiting for all the instances to startup..."
wait
ls -al /tmp/patch_databases_start_db*ksh 2>/dev/null
[[ "$?" -eq 0 ]] && slow "WARNING: Database start scripts still running. Should not be the case!"
ps -ef|grep [p]mon >/tmp/pmon_listing
for ORACLE_SID in ${SID_LIST}; do
    grep "${ORACLE_SID}" /tmp/pmon_listing >/dev/null 2>&1
    [[ "$?" -ne 0 ]] && slow "WARNING: Instance ${ORACLE_SID} has not restarted. Please check later"
done
rm /tmp/pmon_listing


# ===========================================
# datapatch all databases in this ORACLE_HOME
# ===========================================
TS="$(date '+%Y%m%d')"
export SID_LIST=$(grep '19\.17' /etc/oratab|awk -F: '{print $1}')
ORAENV_ASK=NO
for i in ${SID_LIST}; do
    export ORACLE_SID=${i}
    . oraenv >/dev/null
    [[ "$?" -ne 0 ]] && echo "ERROR: Cannot set environment for ${i}" && exit 1
    echo "create or replace directory OPATCH_INST_DIR as '${ORACLE_HOME}/OPatch';"|sqlplus -s / as sysdba
    echo "create or replace directory OPATCH_SCRIPT_DIR as '${ORACLE_HOME}/QOpatch';"|sqlplus -s / as sysdba
    echo "create or replace directory OPATCH_LOG_DIR as '${ORACLE_HOME}/rdbms/log/QOpatch';"|sqlplus -s / as sysdba
    echo "INFO: datapatching ${i}"
    datapatch -verbose >"${ORACLE_HOME}/log/datapatch/datapatch_${i}_${TS}.log" 2>&1 &
done
echo "INFO: Waiting for all the datapatches to finish..."
wait

# check the logfiles for errors

# check all databases are up correctly

# =======================================
# start all listeners in this ORACLE_HOME
# =======================================
lsnrctl start LSNR_HN481_1521
lsnrctl start LSNR_HN481_1525
lsnrctl start LSNR_HN481_3527
lsnrctl start LSNR_HN481_3529
lsnrctl start LSNR_HN481_3531
applying_patches.txt · Last modified: 2023/02/06 19:06 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki