1. Environmental Information
key | value |
operating system | RHEL7.2 |
Database Version | 12.2.0.1 |
Giro | 26610291 |
The number of instances | 4 |
2. Implementation Process
1) Check the current status of the database service
2) upload patch kit
3) Collision Detection
4) Application patch
5) update the data dictionary
6) Check
3. The implementation process
3.1 check the database state
su - grid crsctl status res -t -init crsctl status res -t tail -100f $(orabase)/diag/asm/+ASM/trace/alert*.log
# Run CVU checks
cd /ups/oracle/12.2/grid/ ./runcluvfy.sh stage -pre crsinst -n orc1,orc2 -fixup -verbose
su - oracle tail -100f $(orabase)/diag/rdbms/$DB_NAME/$SID/trace/alert*.log
3.2 update patch tool - all nodes
# 更新OPatch工具 su - root mv /ups/oracle/12.2/grid/OPatch /ups/oracle/12.2/grid/OPatch_20171010 cd /ups/soft unzip p6880880_122010_Linux-x86-64.zip -d /ups/oracle/12.2/grid chown -R grid:oinstall /ups/oracle/12.2/grid/OPatch chmod -R +x /ups/oracle/12.2/grid/OPatch su - oracle cd /ups/soft mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_$(date +%Y%m%d) unzip p6880880_122010_Linux-x86-64.zip -d /ups/oracle/database/product/12.2/db_1/
3.3 patch conflict detection - all nodes
# 1. 解压RU补丁 su - grid unzip p26610291_122010_Linux-x86-64.zip -d /ups/soft/ # 2. For Grid Infrastructure Home, as home user: su - grid $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /ups/soft/26610291/26609817 $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /ups/soft/26610291/26609966 $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /ups/soft/26610291/25586399 # 3.For Database home, as home user: su - oracle $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /ups/soft/26610291/26609817 $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /ups/soft/26610291/26609966 # 4. For Grid Infrastructure Home, as home user: su - grid cat >> /tmp/patch_list_gihome.txt << EOF /ups/soft/26610291/25586399 /ups/soft/26610291/26609966 /ups/soft/26610291/26609817 EOF $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_gihome.txt # 5. For Database home, as home user: su - oracle cat >> /tmp/patch_list_dbhome.txt << EOF /ups/soft/26610291/26609966 /ups/soft/26610291/26609817 EOF # 6. 补丁应用分析-并不进行软件更新 su - root . /home/grid/.bash_profile && export GI_HOME=${ORACLE_HOME} && export UNZIPPED_PATCH_LOCATION=/ups/soft ${GI_HOME}/OPatch/opatchauto apply ${UNZIPPED_PATCH_LOCATION}/26610291 -analyze OR ${GI_HOME}/OPatch/opatchauto rollback ${UNZIPPED_PATCH_LOCATION}/26610291 -analyze
3.4 apply the patch - each node in order to perform
su - root # 1. Add the directory containing the opatchauto to the $PATH environment variable. For example: export PATH=$PATH:/ups/oracle/12.2/grid/OPatch # 2. To patch the GI home and all Oracle RAC database homes of the same version: /ups/oracle/12.2/grid/OPatch/opatchauto apply /ups/soft/26610291 # 3. To patch only the GI home: opatchauto apply <UNZIPPED_PATCH_LOCATION>/26610291 -oh <GI_HOME> # 4. To patch one or more Oracle RAC database homes: opatchauto apply <UNZIPPED_PATCH_LOCATION>/26610291 -oh <oracle_home1_path>,<oracle_home2_path> # 5. To roll back the patch from the GI home and each Oracle RAC database home: # opatchauto rollback <UNZIPPED_PATCH_LOCATION>/26610291 # 6. To roll back the patch from the GI home: # opatchauto rollback <UNZIPPED_PATCH_LOCATION>/26610291 -oh <path to GI home> # 7. To roll back the patch from the Oracle RAC database home: # opatchauto rollback <UNZIPPED_PATCH_LOCATION>/26610291 -oh <oracle_home1_path>,<oracle_home2_path>
3.5 update the data dictionary (all nodes to be selected from a patch update completes execution example)
su - oracle srvctl start instance -d orcl -i orcl1 sqlplus /nolog connect / as sysdba alter pluggable database all open instances=all; quit; cd $ORACLE_HOME/OPatch ./datapatch -verbose
3.6 Check
# Detection dictionary updates su - the Oracle cd $ ORACLE_BASE / cfgtoollogs / sqlpatch / 26,610,291 / <UNIQUE Patch ID> 26610291_apply_ <Database SID> _ <CDB name> _ <timestamp> .log # check the database service su - Grid crsctl Status RES - t # check the patch application su - Grid opatch lspatches su - the Oracle opatch lspatches # inspection view sqlplus "/ AS sysdba" the SET Lines 168 Pages and the 999 COL the DESCRIPTION for A40 COL Status for A10 COL Version for A10 the SELECT patch_id, PATCH_UID, the STATUS, VERSION , bUNDLE_ID, to_char (ACTION_TIME, ' yyyy-mm-dd hh24: mi: ss') ACTION_TIME, DESCRIPTION from dba_registry_sqlpatch; PATCH_ID PATCH_UID the STATUS VERSION bundle_ID ACTION_TIME the DESCRIPTION ----- ----- ---------- ---------- ------------ ---------- --- ---------------- ---------------------------------- ------ 26609817 21483023 SUCCESS 12.2.0.1 170814 2017-10-11 09:37:18 DATABASE RELEASE UPDATE 12.2.0.1.170814 SQL>
Step 4. rollback
# Rollback software patch su - root <GI_HOME> / OPatch / opatchauto ROLLBACK <UNZIPPED_PATCH_LOCATION> / 26,610,291 # rollback data dictionary update su - the Oracle sqlplus / nolog Connect / AS sysdba the Startup the ALTER Pluggable Database All Open; quit; cd $ (orabasehome ) / OPatch ./datapatch -verbose # fail if the object exists, the script execution repair cd $ ORACLE_HOME / the RDBMS / ADMIN sqlplus / nolog SQL> the CONNECT / AS SYSDBA SQL> @? / the RDBMS / ADMIN / utlrp.sql