Zero-Downtime Oracle Grid Infrastructure Patching

Use Fleet Patching and Provisioning to patch Oracle Grid Infrastructure without bringing down Oracle RAC database instances.

Note:

The Zero Downtime Upgrade (ZDU) feature of Oracle Fleet Patching and Provisioning (FPP) is deprecated in Oracle Database 23ai. 

ZDU uses either Transient Logical Standby or Oracle GoldenGate classic. However, Transient Logical Standby does not support the latest data types, and the Oracle GoldenGate classic implementation is deprecated. Instead of ZDU, Oracle recommends that you use FPP in combination with the DBMS_ROLLING PL/SQL package: You can use FPP for the provisioning and deployment of new Oracle homes, and you can use DBMS_ROLLING as a streamlined method of performing rolling upgrades.

The DBMS_ROLLING package is closely integrated with Application Continuity to help to minimize disruptions in the database tier, and mask rolling patching activities.

Current methods of patching the Oracle Grid Infrastructure require that you bring down all Oracle RAC database instances on the node where you are patching the Oracle Grid Infrastructure home. This issue is addressed in the Grid Infrastructure layer where by the database instances can continue to run during the Oracle Grid Infrastructure patching.

Note:

You can use zero-downtime patching only for out-of-place patching of Oracle Grid Infrastructure 19c Release Update (RU) 19.8 or later releases with Oracle RAC or Oracle RAC One Node databases of 19c or later releases. If your Oracle RAC or Oracle RAC One Node database release is older than 19c, then the database instances stop during zero-downtime patching.

To enable zero-downtime Oracle Grid Infrastructure patching, use the rhpctl move gihome command in a manner similar to the following:

rhpctl move gihome -tgip -sourcewc source_workingcopy_name -destwc destination_workingcopy_name

Patching System Software Binaries

When using Zero Downtime Patching, only the binaries in the Oracle Grid Infrastructure user space are patched. Additional Oracle Grid Infrastructure OS system software, kernel modules and system commands including ACFS, AFD, and OKA, are not updated. These commands continue to run the version previous to the patch version. After patching, the OPatch inventory displays the new patch number in the inventory; however, the running OS system software does not contain these changes. Only the OS system software that is available in the Grid Infrastructure home has been patched.

To determine the OS system software that is available in the Grid Infrastructure home, you can run the crsctl query driver activeversion -all command. To determine what OS system software is running on the system, use crsctl query driver softwareversion -all.

To update the Grid Infrastructure OS system software on a single node, you must completely stop the Grid Infrastructure software. To stop the Grid Infrastructure software, you must stop the Oracle RAC databases on the single node. After stopping the Oracle RAC databases, run root.sh -updateosfiles to update all the Grid Infrastructure OS system software on the single node.

Zero-downtime patching does not automatically update the operating system drivers. During the zero-downtime patching process, updated operating system drivers are copied in the Grid home, but these drivers are not installed into the operating system. The cluster continues to use the older version of the operating system drivers until the updated drivers are installed in the operating system.

If you are using Oracle ASM Filter Driver (Oracle ASMFD) or Oracle ACFS for database storage, then operating system drivers are updated in either of the following scenarios:

  1. You update your operating system kernel and restart the cluster node.
  2. You run the rootcrs.sh -updateosfiles command on each cluster node and restart the cluster nodes, if the operating system drivers fail to install.

You can check the active operating system driver version on a cluster node using the crsctl query driver activeversion [-all] command and available operating system driver version using the crsctl query driver softwareversion [-all] [-f] command.