Patching Guidelines for Exadata Machine

Even though Oracle Offers free Exadata patching to their Exadata customers under Oracle Platinum Services, you might still end up applying patches to your Exadata Machine for many reasons. There can be a compliance issue or scheduling problem which may prevent you from using Oracle Platinum Service to patch your Exadata systems. Remember, Oracle needs Minimum 8-12 weeks prior notice before customer wants to be patched and might not work for you. So if you are one of those lucky Exadata Machine Admin planning to apply patches to your Exadata systems, here are some guidelines for safely completing patching task with minimum risks.


  1. You must carefully review the patch readme file and familiarize yourself with known issues and rollback options.
  2. Create a detailed workbook to Patch Exadata Machine including rollback option.
  3. Find Test system in your organization mimicking production system in terms of capacity and software version.
  4. Run Exachk utility before you start applying the patch to establish a baseline. Additionally, fix any major issues you see in the Exadata Health Check report.
  5. Reboot your Exadata Machine before you start applying the patch.
  6. Make sure you have enough Storage on all the mounts affected by the patch.
  7. Backup everything, I mean everything. Backup all the databases and storage mount holding software binaries.
  8. Apply the patch on a test system and document each step in a workbook to deploy patches for rest of the Exadata systems.
  9. Run Exachk utility after the successful patch application and compare its baseline Exachk report.
  10. Reboot Exadata Machine after deploying the patch to make sure there will not be issues with future Exadata Reboots.
  11. Verify all the Exadata Software and Hardware components InfiniBand, Storage Cells and Compute nodes.
  12. Move to applying the patch to Production systems, after successful patching exercise.

Installing Additional RDBMS Home on Exadata Machine

As you may already know that you can have multiple RDBMS Versions/Homes running on Exadata machine. You can request to install multiple homes by Oracle ACS or Oracle Certified Partner with your original Exadata deployment. But in case you end up needing to add Oracle RDBMS on Exadata machine, you can follow below steps to add RDBMS home successfully. In my case I already had a home but I needed to add home.

Step 1 : Create new local storage mount for new Oracle RDBMS home. Steps to add local storage can be little different if your Exadata Machine is virtualized, please follow Exadata maintenance guide to create a local storage mount. You can also use existing storage mount but its best practice to have separate mount for maintenance and support reasons.

Upload 01

Step 2 : Identify RDBMS Software and Patches, You can use following 3 methods to get the complete list.

  • Open SR with Oracle
  • Get complete list from already installed home
  • Use OEDA utility

Upload 02

Step 3 : Download Software & Patches to Exadata Machine, I used latest OEDA utility to get the complete list of following software and patches.

  • RDBMS Software
  • Latest Opatch Utility
  • Latest Exadata Bundle Patche April 2016
  • ORACLE DATABASE Overlay Patch for Bug#23200778
  • Oracle JavaVM Component PSU

Upload 03

Step 4 :Install Oracle Software to new database mount. I will not get into details here, since most of you are already familiar with RDBMS Cluster install.

Upload 04

Step 5 : Implement RDS protocol over Infiniband network

  • Set ORACLE_HOME environment variable
  • cd $ORACLE_HOME/rdbms/lib
  • make -f $ORACLE_HOME/rdbms/lib/ ipc_rds ioracle


Step 6 :  Install latest Opatch Utility: There are many ways to you install latest Optach Utility, I simply created a text (dbs_groups) with all the dbnodes name in it and install opatch utility using dcli command. You do need to copy zip file to all the nodes.

  • Create dbs_group
  • Scp Node2: /u01/app/oracle/product/software/
  • dcli -l oracle -g dbs_group unzip -oq -d /u01/app/oracle/product/ /u01/app/oracle/product/software/

Upload 05

Step 7 : Check version of new dcli utility and verify if patch is installed successfully

  • dcli -l oracle -g dbs_group /u01/app/oracle/product/ version

Upload 06

Step 8 : Apply Bundle April patch 22899777: I am applying April bundle patch, so I can be consistent with my other database home. I already have GRID (12c) and RDBMS (12c) home running from this machine and I wanted to be at same patch level as them. Please follow below step to Install patch database home only.  You will be applying patch locally, so you need to copy patch to all the nodes and repeat same process for all nodes in cluster.

  • scp to other nodes
  • unzip
  • export ORACLE_HOME=/u01/app/oracle/product/
  • export PATH=$PATH:/u01/app/oracle/product/
  • $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/app/oracle/product/software/22899777/22738760
  • $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/app/oracle/product/software/22899777/22502549/custom/server/22502549
  • $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseDir /u01/app/oracle/product/software/22899777/22738760
  • $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseDir /u01/app/oracle/product/software/22899777/22502549/custom/server/22502549
  • change Permision on following files :
  • chmod 775 /u01/app/oracle/product/software/22899777/22502549/custom/scripts/*
  • /u01/app/oracle/product/software/22899777/22502549/custom/scripts/ -dbhome $ORACLE_HOME
  • $ORACLE_HOME/OPatch/opatch napply -oh $ORACLE_HOME -local /u01/app/oracle/product/software/22899777/22738760
  • $ORACLE_HOME/OPatch/opatch napply -oh $ORACLE_HOME -local /u01/app/oracle/product/software/22899777/22502549/custom/server/22502549
  • /u01/app/oracle/product/software/22899777/22502549/custom/scripts/ -dbhome $ORACLE_HOME
  • $ORACLE_HOME/OPatch/opatch lsinventory

upload 07

Step 9 : Install ORACLE DATABASE Overlay Patch for Bug#23200778 for Linux-x86-64 Platforms

  • unzip
  • cd 23200778
  • opatch prereq CheckConflictAgainstOHWithDetail -ph ./
  • cd 23200778
  • opatch apply
  • $ORACLE_HOME/OPatch/opatch lsinventory

upload 08

Step 10 : Install Oracle JavaVM Component Database PSU (Apr2016)

  • unzip p22674697_112040_Linux-x86-64
  • cd 22674697
  • opatch prereq CheckConflictAgainstOHWithDetail -ph ./
  • cd 22674697
  • opatch apply
  • $ORACLE_HOME/OPatch/opatch lsinventory

upload 09

Step 11 : List opatch Ispatches

upload 10