Oracle RAC - Apply patch with Standby in Configuration

Oracle RAC - Apply patch with Standby in Configuration 


DBAs have to apply patches quarterly as the PSU patch have been released. In order to make task easy, We have come up with steps to Patch RAC environment with standby in configuration. 

Below are the steps and details:
 
Environment Details:
Nodes to be Patched:
Primary
Node 1 - PRIMARYRAC01
Node 2 - PRIMARYRAC02
DB to be patched: test,abd

Standby
Node 3 - STDBYRAC01
Node 4 - STDBYRAC01
DB to be patched: ntulearndr,sbblearn

Pre-Patch Installation Instruction:

Validation of Oracle Inventory.
a) Switch to Grid User
# su – grid
$ /u01/app/12.1.0.2/grid/OPatch/optach lsinventory >  /backup/patch/backup/Cluster_invn_bck.log

b) Switch to Oracle User
# su – oracle
$ /u01/app/oracle/product/12.1.0.2/dbhome_1/OPatch/optach lsinventory > /backup/patch/backup/Cluster_invn_bck.log

Collect each Database information using below command (Using sysdba):
a) Create pfile for database
SQL> create pfile='/backup/patch/backup/inittest_25052019.ora' from spfile;
b) Run Utlrp for Database
SQL> @?\rdbms\admin\utlrp.sql
c) Collect Database info:
SQL> spool /backup/patch/backup/test_info.log
SQL> select instance_name from gv$instance;
SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS = 'INVALID';
SQL> select comp_id,comp_name,version,status from dba_registry;
SQL> select * from sys.registry$history order by 1 desc;
SQL> select * from registry$sqlpatch;
SQL> spool off

Patch Installation Instruction:

Upgrade OPATCH
OPatch needs to be upgraded on GRID_HOME and RDBMS_HOME of all nodes
1. Download OPatch version 12.2.0.1.14 to following folder path: 
/backup/patch/p6880880_121010_Linux-x86-64.zip

2. Check current OPatch version
Run below commands against GRID_HOME or RDBMS_HOME as  grid owner user and oracle owner user respectively
$ export ORACLE_HOME=<GRID_HOME or RDBMS_HOME>
$ export PATH=$ORACLE_HOME/OPatch:$PATH
$ opatch version

3. Upgrade OPatch on Database software and verify 
On all nodes as ORACLE user
$ export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1
$ mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_bkp_121013
$ unzip /backup/patch/p6880880_121010_Linux-x86-64.zip -d $ORACLE_HOME
$ opatch version

4. Upgrade OPatch on Grid software and verify 
On all nodes as GRID user
$ export ORACLE_HOME=/u01/app/12.1.0.2/grid
$ mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_bkp_121013
$ unzip /backup/patch/p6880880_121010_Linux-x86-64.zip -d $ORACLE_HOME
$ opatch version

Validate Oracle Inventory
It is important to ensure that Oracle Inventory is consistent on each GRID_HOME and RDBMS_HOME that are to be patched, follow below steps to confirm:

For Oracle Grid Infrastructure: as GRID user on all nodes

$ export ORACLE_HOME=/u01/app/12.1.0.2/grid
$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
The successful execution of command will list Oracle components and patches, if any for Oracle Home.
For Oracle RDBMS: as ORACLE user on all nodes
$ export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1
$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

Apply PSU

1. Download Patch PSUNUM (Completed)
The installation of patch will be carried-out as root user, however it is must that owner of the zip file is grid user.
As root perform below steps to ensure this:
# cd /backup/patch/
# unzip pPSUNUM_121020_Linux-x86-64.zip
# chown grid:oinstall –R /backup/patch/PSUNUM

2. Check for any conflicts (***)
Although no interim patches are applied thus check would pass. As root user run below command to check for conflicts in
both  GRID_HOME and RDBMS_HOME on node PRIMARYRAC01 and STDBYRAC01,  run as root :
# export ORACLE_HOME=/u01/app/12.1.0.2/grid
# export PATH=$ORACLE_HOME/OPatch:$PATH
# opatchauto apply /backup/patch/PSUNUM -analyze

3. Stop logshipping from PRIMARY and stop Managed Recovery Process on STANDBY
Defer respective log_archive_dest_n parameter and cancel managed recovery.

Stop MRP on standby server(STDBYRAC01/B):
SYS@testdr1>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
Stop Archive send standby side (PRIMARYRAC01/B):
SYS@test1> ALTER SYSTEM SET log_archive_dest_state_2 = DEFER sid='*' ;
4. Apply patch on STANDBY Nodes
Logon to STDBYRAC01 and STDBYRAC01 as root user, and follow below steps on one node at a time

Source environment for GRID HOME and Patch GRID_HOME on Node 1 and Node 2

NODE 1 (STDBYRAC01)
# export ORACLE_HOME=/u01/app/12.1.0.2/grid
# export PATH=$ORACLE_HOME/OPatch:$PATH
[root@STDBYRAC01 PSUNUM]# opatchauto apply /backup/patch/PSUNUM -oh /u01/app/12.1.0.2/grid

NODE 2 (STDBYRAC01)
# export ORACLE_HOME=/u01/app/12.1.0.2/grid
# export PATH=$ORACLE_HOME/OPatch:$PATH
[root@STDBYRAC01 PSUNUM]# opatchauto apply /backup/patch/PSUNUM -oh /u01/app/12.1.0.2/grid

Source environment for RDBMS HOME and Patch RDBMS_HOME on both nodes
We will shut down standby database before patching RDBMS_HOME, this is because opatchauto will attempt to load modified SQLs in database by running datapatch utility.
As oracle user stop database:
$ srvctl stop database -d testdr

NODE 1 (STDBYRAC01)
# export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1
# export PATH=$ORACLE_HOME/OPatch:$PATH
[root@STDBYRAC01 PSUNUM]# opatchauto apply /backup/patch/PSUNUM -oh /u01/app/oracle/product/12.1.0/dbhome_1

NODE 2 (STDBYRAC01)
# export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1
# export PATH=$ORACLE_HOME/OPatch:$PATH
[root@STDBYRAC01 PSUNUM]# opatchauto apply /backup/patch/PSUNUM -oh /u01/app/oracle/product/12.1.0/dbhome_1

You may now start the standby database as oracle user: (STDBYRAC01/B)
$ srvctl start database -d tester -o mount

5. Apply Patch on PRIMARY Nodes (as root user)
Apply on one node at a time:
NODE 1 (PRIMARYRAC01)
# export ORACLE_HOME=/u01/app/12.1.0.2/grid
# export PATH=$ORACLE_HOME/OPatch:$PATH
[root@PRIMARYRAC01 PSUNUM]# opatchauto apply /backup/patch/PSUNUM

NODE 2 (PRIMARYRAC02)
# export ORACLE_HOME=/u01/app/12.1.0.2/grid
# export PATH=$ORACLE_HOME/OPatch:$PATH
[root@PRIMARYRAC02 PSUNUM]# opatchauto apply /backup/patch/PSUNUM

6. Start Logshipping on PRIMARY and Managed Recovery Process on STANDBY
Enabled log_archive_dest_n parameter on primary and start MRP on standby.

Start Archive send standby side:
SYS@ntulearn1> ALTER SYSTEM SET log_archive_dest_state_2 = ENABLE sid='*' ;

Stop MRP on standby server:
SYS@ntulearndr1>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
7. Verify Patch.(Check Pre-Patch Installation Instruction output for comparison).


=================================================================
Please check our other blogs for  Oracle RAC & Cluster.

Comments

Popular posts from this blog

Restart Innodb MySQL Cluster after Complete outage(All node Down)

Oracle Block Corruption - Detection and Resolution

Add or Remove a node in MySQL Innodb Cluster