Tarde o temprano tendremos que aplicar un patch a nuestra instalación, ya sea un Interim Patch, un Patch Set Update (PSU) o un Security Patch Update (SPU)1. Llegado ese momento nos encontramos con un serio problema: debemos suspender el servicio mientras aplicamos el patch.

En el presente artículo analizaremos la forma de aplicar un patch a Oracle Grid Infrastructure (en adelante GI), ya sea éste de la versión 11.2 o 12.1, pero haciendo énfasis en minimizar la suspensión del servicio, pero para poder identificar justamente cómo lograrlo, debemos  empezar con un poco de teoría.

Modalidades de aplicación de patches

1. Parallel y Rolling Patching

 

Parallel Patching. En esta modalidad todos los nodos del cluster son detenidos, y luego de ello se procede a aplicar el patch de forma simultánea en todos y cada uno de los nodos. Es el peor escenario: el servicio está suspendido mientras no se concluya con el patching.

   

Rolling Patching. En esta modalidad se detiene el servicio en el primer nodo, se le aplica el patch, se reinicia el servicio y luego de ello se repite el mismo procedimiento con el segundo nodo, y así sucesivamente hasta que se haya aplicado el patch en la totalidad de nodos del cluster. Es un escenario mucho más favorable que el anterior, ya que se puede brindar servicio en los nodos que no estén siendo sujetos del patching.

 

 

2. In-Place y Out-of-Place Patching

 

In-Place Patching. En esta modalidad el patch se aplica directamente sobre el home que contiene el software en uso, lo que implica detener todos los servicios que dependan de él. Luego de aplicar el patch de forma satisfactoria, se pueden reiniciar los servicios. En caso hayan problemas con la aplicación del patch se deberá hacer recovery del software ya que puede haber quedado dañado, lo cual incrementa el tiempo de suspensión del servicio.

   

Out-of-Place Patching. En esta modalidad se clona el home que contiene el software en uso, para luego aplicar el patch sobre el home clonado. Si el patch es aplicado satisfactoriamente, se suspende el servicio y se reinicia pero direccionado al nuevo home. Si posteriormente a ello se determina que algo no opera normalmente, es posible detener el servicio y reiniciarlo direccionando al antiguo home.

 

 

Rolling Out-of-Place Patching.

De lo anteriormente expuesto, resulta evidente que la estrategia que produce el menor riesgo y menor suspensión del servicio es la de Rolling Out-of-Place Patching, por lo que se procederá a continuación a mostrar paso a paso el procedimiento para ejecutarlo.

 

En primer lugar tomemos en cuenta las siguientes suposiciones iniciales:

  • GI home directory original: /u01/app/grid/12.1.0/grid_1
  • GI home directory clonado: /u01/app/grid/12.1.0/grid_2
  • La versión en uso de GI es la 12.1.0.1.0, y se desea aplicar el PSU 12.1.0.1.4
  • Se ha descargado e instalado correctamente la versión más reciente de OPatch2

 

1. Empezamos por copiar el software desde el GI home directory original hacia el clonado, en el primer nodo del cluster (node1).

[root@node1 ~]# export GRID_HOME=/u01/app/grid/12.1.0/grid_2

[root@node1 ~]# export GRID_HOME_OLD=/u01/app/grid/12.1.0/grid_1

[root@node1 ~]# mkdir ${GRID_HOME}

[root@node1 ~]# chown -R oracle:oinstall ${GRID_HOME}

[root@node1 ~]# chmod -R 775 ${GRID_HOME}

[root@node1 ~]# cd ${GRID_HOME_OLD}

[root@node1 grid_1]# tar -cpf - . | ( cd ${GRID_HOME} ; tar -xpf - )

Observación: es posible que se nos presenten mensajes indicando que algunos archivos se estuvieron modificando mientras se realiza la copia, no hay nada de qué preocuparse, podemos ignorar estos mensajes.

 

2. Desbloquear el GI home directory clonado, tomando en cuenta que los comandos son algo distintos dependiendo de la versión de GI, pero con el mismo resultado: modificar los archivos de propiedad de "root" para que lo sean de "oracle".

 

GI 12.1

[root@node1 ~]# export GRID_HOME=/u01/app/grid/12.1.0/grid_2

[root@node1 ~]# /usr/bin/perl ${GRID_HOME}/crs/install/rootcrs.pl -prepatch -dstcrshome ${GRID_HOME}

Using configuration parameter file: /u01/app/grid/12.1.0/grid_2/crs/install/crsconfig_params

2014/07/21 18:22:08 CLSRSC-347: Successfully unlock /u01/app/grid/12.1.0/grid_2

 

GI 11.2

[root@node1 ~]# export GRID_HOME=/u01/app/grid/11.2.0/grid_2

[root@node1 ~]# /usr/bin/perl ${GRID_HOME}/OPatch/crs/patch112.pl -unlock -desthome ${GRID_HOME}

Prototype mismatch: sub main::trim: none vs ($) at /u01/app/grid/11.2.0/grid_2/OPatch/crs/patch112.pl line 401.

opatch auto log file location is /u01/app/grid/11.2.0/grid_2/crs/install/../../cfgtoollogs/opatchauto2014-07-22_05-46-51.log

Detected Oracle Clusterware install

Using configuration parameter file: /u01/app/grid/11.2.0/grid_2/crs/install/crsconfig_params

Successfully unlock /u01/app/grid/11.2.0/grid_2

 

3. Clonar la instalación con el utilitario clone.pl

[oracle@node1 ~]$ export GRID_HOME=/u01/app/grid/12.1.0/grid_2

[oracle@node1 ~]$ export THIS_NODE=`hostname -s`

[oracle@node1 ~]$ /usr/bin/perl ${GRID_HOME}/clone/bin/clone.pl \

ORACLE_BASE=/u01/app/oracle \

ORACLE_HOME=$GRID_HOME \

ORACLE_HOME_NAME=OraGI12Home2 \

INVENTORY_LOCATION=/u01/app/oraInventory \

"CLUSTER_NODES={node1,node2,node3,node4,node5,node6,node7,node8}" \

LOCAL_NODE=${THIS_NODE} \

SHOW_ROOTSH_CONFIRMATION=false \

CRS=true

./runInstaller -clone -waitForCompletion  "ORACLE_BASE=/u01/app/oracle" "ORACLE_HOME=/u01/app/grid/12.1.0/grid_2" "ORACLE_HOME_NAME=OraGI12Home2" "INVENTORY_LOCATION=/u01/app/oraInventory" "CLUSTER_NODES={node1,node2,node3,node4,node5,node6,node7,node8}" "LOCAL_NODE=node1" "SHOW_ROOTSH_CONFIRMATION=false" "CRS=true" -silent -paramFile /u01/app/grid/12.1.0/grid_2/clone/clone_oraparam.ini

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 500 MB.   Actual 3412 MB    Passed

Checking swap space: must be greater than 500 MB.   Actual 1020 MB    Passed

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2014-07-21_07-10-04PM. Please wait ...

You can find the log of this install session at:

 /u01/app/oraInventory/logs/cloneActions2014-07-21_07-10-04PM.log

..................................................   5% Done.

..................................................   10% Done.

..................................................   15% Done.

..................................................   20% Done.

..................................................   25% Done.

..................................................   30% Done.

..................................................   35% Done.

..................................................   40% Done.

..................................................   45% Done.

..................................................   50% Done.

..................................................   55% Done.

..................................................   60% Done.

..................................................   65% Done.

..................................................   70% Done.

..................................................   75% Done.

..................................................   80% Done.

..................................................   85% Done.

..................................................   90% Done.

..................................................   95% Done.

Copy files in progress.

Copy files successful.

Link binaries in progress.

Link binaries successful.

Setup files in progress.

Setup files successful.

Setup Inventory in progress.

Setup files successful.

Setup Inventory in progress.

Setup Inventory successful.

Finish Setup successful.

The cloning of OraGI12Home2 was successful.

Please check '/u01/app/oraInventory/logs/cloneActions2014-07-21_07-10-04PM.log' for more details.

As a root user, execute the following script(s):

        1. /u01/app/grid/12.1.0/grid_2/root.sh

Execute /u01/app/grid/12.1.0/grid_2/root.sh on the following nodes:

[node1]

..................................................   100% Done.

 Aun cuando al final de la clonación se nos indica ejecutar el script "root.sh", debemos ignorarlo.

 

4. Aplicar el patch sobre el GI home directory clonado, siguiendo estrictamente los pasos señalados en la documentación asociada el patch, pero en lo correspondiente a su aplicación manual, no a la automática.

Para nuestro ejemplo tomaremos como referencia lo indicado en el Note 1594184.1 Example: Manually Apply a 12c GI PSU in Cluster Environment, que es idéntico al procedimiento a seguir si se tratara de un 11.2 GI PSU. 

[oracle@node1 ~]$ export GRID_HOME=/u01/app/grid/12.1.0/grid_2

[oracle@node1 ~]$ ${GRID_HOME}/OPatch/ocm/bin/emocmrsp -no_banner -output /stage/psu4/ocm.rsp

[oracle@node1 ~]$ ${GRID_HOME}/OPatch/opatch napply -oh ${GRID_HOME} -local /stage/psu4/18705901/18522516 -silent -ocmrf /stage/psu4/ocm.rsp

[oracle@node1 ~]$ ${GRID_HOME}/OPatch/opatch napply -oh ${GRID_HOME} -local /stage/psu4/18705901/17077442 -silent -ocmrf /stage/psu4/ocm.rsp

[oracle@node1 ~]$ ${GRID_HOME}/OPatch/opatch napply -oh ${GRID_HOME} -local /stage/psu4/18705901/17303297 -silent -ocmrf /stage/psu4/ocm.rsp

 

5. Repetir los pasos del 1 al 4 para todos y cada uno de los nodos restantes del cluster. Se pueden ejecutar en varios/todos los nodos en paralelo, por cuanto se trabaja sobre el GI home directory clonado y por consiguiente no afecta la disponibilidad de los servicios.

 

6. Luego que todos los nodos del cluster tiene el GI home directory clonado y con el patch debidamente aplicado, se procede a realizar el switch de GI home directories, un nodo a la vez, empezando por el primer nodo (node1).

Se empieza por detener todas y cada una de las instancias de las bases de datos en RAC que estén brindando servicio en este primer nodo. El servicio se seguirá brindando en las instancias que operen en otros nodos del cluster. Si se trata de bases de datos RAC One Node se pueden trasladar a algún otro nodo, de forma de seguir brindando servicio mientras trabajamos en éste.

Cuando ya no haya instancia alguna operando en éste nodo procedemos a ejecutar los siguientes comandos.

 

GI 12.1

[root@node1 ~]# export GRID_HOME=/u01/app/grid/12.1.0/grid_2

[root@node1 ~]# ${GRID_HOME}/rdbms/install/rootadd_rdbms.sh

[root@node1 ~]# /usr/bin/perl ${GRID_HOME}/crs/install/rootcrs.pl -postpatch -dstcrshome ${GRID_HOME}

Using configuration parameter file: /u01/app/grid/12.1.0/grid_2/crs/install/crsconfig_params

Oracle Clusterware active version on the cluster is [12.1.0.1.0]. The cluster upgrade state is [NORMAL]. The cluster active patch level is [0].

CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'node1'

CRS-2673: Attempting to stop 'ora.crsd' on 'node1'

CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'node1'

CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'node1'

CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'node1'

CRS-2673: Attempting to stop 'ora.SYS.dg' on 'node1'

CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.scan1.vip' on 'node1'

CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.node1.vip' on 'node1'

CRS-2677: Stop of 'ora.node1.vip' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.node1.vip' on 'node2'

CRS-2677: Stop of 'ora.scan1.vip' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.scan1.vip' on 'node2'

CRS-2676: Start of 'ora.node1.vip' on 'node2' succeeded

CRS-2676: Start of 'ora.scan1.vip' on 'node2' succeeded

CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'node2'

CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'node2' succeeded

CRS-2677: Stop of 'ora.SYS.dg' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.asm' on 'node1'

CRS-2677: Stop of 'ora.asm' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.ons' on 'node1'

CRS-2677: Stop of 'ora.ons' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.net1.network' on 'node1'

CRS-2677: Stop of 'ora.net1.network' on 'node1' succeeded

CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'node1' has completed

CRS-2677: Stop of 'ora.crsd' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.storage' on 'node1'

CRS-2673: Attempting to stop 'ora.mdnsd' on 'node1'

CRS-2673: Attempting to stop 'ora.gpnpd' on 'node1'

CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'node1'

CRS-2677: Stop of 'ora.storage' on 'node1' succeeded

CRS-2677: Stop of 'ora.drivers.acfs' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.ctssd' on 'node1'

CRS-2673: Attempting to stop 'ora.evmd' on 'node1'

CRS-2673: Attempting to stop 'ora.asm' on 'node1'

CRS-2677: Stop of 'ora.gpnpd' on 'node1' succeeded

CRS-2677: Stop of 'ora.mdnsd' on 'node1' succeeded

CRS-2677: Stop of 'ora.evmd' on 'node1' succeeded

CRS-2677: Stop of 'ora.ctssd' on 'node1' succeeded

CRS-2677: Stop of 'ora.asm' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'node1'

CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.cssd' on 'node1'

CRS-2677: Stop of 'ora.cssd' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.gipcd' on 'node1'

CRS-2677: Stop of 'ora.gipcd' on 'node1' succeeded

CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'node1' has completed

CRS-4133: Oracle High Availability Services has been stopped.

CRS-4123: Starting Oracle High Availability Services-managed resources

CRS-2672: Attempting to start 'ora.mdnsd' on 'node1'

CRS-2672: Attempting to start 'ora.evmd' on 'node1'

CRS-2676: Start of 'ora.mdnsd' on 'node1' succeeded

CRS-2676: Start of 'ora.evmd' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.gpnpd' on 'node1'

CRS-2676: Start of 'ora.gpnpd' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.gipcd' on 'node1'

CRS-2676: Start of 'ora.gipcd' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.cssdmonitor' on 'node1'

CRS-2676: Start of 'ora.cssdmonitor' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.cssd' on 'node1'

CRS-2672: Attempting to start 'ora.diskmon' on 'node1'

CRS-2676: Start of 'ora.diskmon' on 'node1' succeeded

CRS-2789: Cannot stop resource 'ora.diskmon' as it is not running on server 'node1'

CRS-2676: Start of 'ora.cssd' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'node1'

CRS-2672: Attempting to start 'ora.ctssd' on 'node1'

CRS-2676: Start of 'ora.ctssd' on 'node1' succeeded

CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'node1' succeeded

CRS-2679: Attempting to clean 'ora.asm' on 'node1'

CRS-2681: Clean of 'ora.asm' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.asm' on 'node1'

CRS-2676: Start of 'ora.asm' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.storage' on 'node1'

CRS-2676: Start of 'ora.storage' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.crsd' on 'node1'

CRS-2676: Start of 'ora.crsd' on 'node1' succeeded

CRS-6017: Processing resource auto-start for servers: node1

CRS-2673: Attempting to stop 'ora.node1.vip' on 'node2'

CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'node2'

CRS-2672: Attempting to start 'ora.ons' on 'node1'

CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'node2' succeeded

CRS-2673: Attempting to stop 'ora.scan1.vip' on 'node2'

CRS-2677: Stop of 'ora.scan1.vip' on 'node2' succeeded

CRS-2672: Attempting to start 'ora.scan1.vip' on 'node1'

CRS-2677: Stop of 'ora.node1.vip' on 'node2' succeeded

CRS-2672: Attempting to start 'ora.node1.vip' on 'node1'

CRS-2676: Start of 'ora.scan1.vip' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'node1'

CRS-2676: Start of 'ora.node1.vip' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.LISTENER.lsnr' on 'node1'

CRS-2676: Start of 'ora.ons' on 'node1' succeeded

CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'node1' succeeded

CRS-2676: Start of 'ora.LISTENER.lsnr' on 'node1' succeeded

CRS-6016: Resource auto-start has completed for server node1

CRS-6024: Completed start of Oracle Cluster Ready Services-managed resources

CRS-4123: Oracle High Availability Services has been started.

Oracle Clusterware active version on the cluster is [12.1.0.1.0]. The cluster upgrade state is [NORMAL]. The cluster active patch level is [0].

 

GI 11.2

[root@node1 ~]# export GRID_HOME=/u01/app/grid/11.2.0/grid_2

[root@node1 ~]# ${GRID_HOME}/rdbms/install/rootadd_rdbms.sh

[root@node1 ~]# /usr/bin/perl ${GRID_HOME}/OPatch/crs/patch11203.pl -patch -desthome ${GRID_HOME}

This is the main log file: /u01/app/grid/11.2.0/grid_2/cfgtoollogs/opatchauto2014-07-22_06-50-07.log

This file will show your detected configuration and all the steps that opatchauto attempted to do on your system:

/u01/app/grid/11.2.0/grid_2/cfgtoollogs/opatchauto2014-07-22_06-50-07.report.log

2014-07-22 06:50:07: Starting Clusterware Patch Setup

Using configuration parameter file: /u01/app/grid/11.2.0/grid_2/crs/install/crsconfig_params

CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'node1'

CRS-2673: Attempting to stop 'ora.crsd' on 'node1'

CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'node1'

CRS-2673: Attempting to stop 'ora.cvu' on 'node1'

CRS-2673: Attempting to stop 'ora.LISTENER_SCAN3.lsnr' on 'node1'

CRS-2673: Attempting to stop 'ora.LISTENER_SCAN2.lsnr' on 'node1'

CRS-2673: Attempting to stop 'ora.oc4j' on 'node1'

CRS-2673: Attempting to stop 'ora.SYS.dg' on 'node1'

CRS-2673: Attempting to stop 'ora.registry.acfs' on 'node1'

CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'node1'

CRS-2677: Stop of 'ora.cvu' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.cvu' on 'node2'

CRS-2677: Stop of 'ora.LISTENER_SCAN2.lsnr' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.scan2.vip' on 'node1'

CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.node1.vip' on 'node1'

CRS-2677: Stop of 'ora.LISTENER_SCAN3.lsnr' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.scan3.vip' on 'node1'

CRS-2677: Stop of 'ora.node1.vip' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.node1.vip' on 'node2'

CRS-2677: Stop of 'ora.scan2.vip' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.scan2.vip' on 'node2'

CRS-2677: Stop of 'ora.scan3.vip' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.scan3.vip' on 'node2'

CRS-2677: Stop of 'ora.registry.acfs' on 'node1' succeeded

CRS-2676: Start of 'ora.cvu' on 'node2' succeeded

CRS-2676: Start of 'ora.scan3.vip' on 'node2' succeeded

CRS-2676: Start of 'ora.scan2.vip' on 'node2' succeeded

CRS-2672: Attempting to start 'ora.LISTENER_SCAN3.lsnr' on 'node2'

CRS-2672: Attempting to start 'ora.LISTENER_SCAN2.lsnr' on 'node2'

CRS-2676: Start of 'ora.node1.vip' on 'node2' succeeded

CRS-2676: Start of 'ora.LISTENER_SCAN2.lsnr' on 'node2' succeeded

CRS-2676: Start of 'ora.LISTENER_SCAN3.lsnr' on 'node2' succeeded

CRS-2677: Stop of 'ora.SYS.dg' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.asm' on 'node1'

CRS-2677: Stop of 'ora.asm' on 'node1' succeeded

CRS-2677: Stop of 'ora.oc4j' on 'node1' succeeded

CRS-2672: Attempting to start 'ora.oc4j' on 'node2'

CRS-2676: Start of 'ora.oc4j' on 'node2' succeeded

CRS-2673: Attempting to stop 'ora.ons' on 'node1'

CRS-2677: Stop of 'ora.ons' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.net1.network' on 'node1'

CRS-2677: Stop of 'ora.net1.network' on 'node1' succeeded

CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'node1' has completed

CRS-2677: Stop of 'ora.crsd' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.mdnsd' on 'node1'

CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'node1'

CRS-2673: Attempting to stop 'ora.crf' on 'node1'

CRS-2673: Attempting to stop 'ora.ctssd' on 'node1'

CRS-2673: Attempting to stop 'ora.evmd' on 'node1'

CRS-2673: Attempting to stop 'ora.asm' on 'node1'

CRS-2677: Stop of 'ora.crf' on 'node1' succeeded

CRS-2677: Stop of 'ora.evmd' on 'node1' succeeded

CRS-2677: Stop of 'ora.ctssd' on 'node1' succeeded

CRS-2677: Stop of 'ora.mdnsd' on 'node1' succeeded

CRS-2677: Stop of 'ora.asm' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'node1'

CRS-2677: Stop of 'ora.drivers.acfs' on 'node1' succeeded

CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.cssd' on 'node1'

CRS-2677: Stop of 'ora.cssd' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.gipcd' on 'node1'

CRS-2677: Stop of 'ora.gipcd' on 'node1' succeeded

CRS-2673: Attempting to stop 'ora.gpnpd' on 'node1'

CRS-2677: Stop of 'ora.gpnpd' on 'node1' succeeded

CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'node1' has completed

CRS-4133: Oracle High Availability Services has been stopped.

Installing Trace File Analyzer

CRS-4123: Oracle High Availability Services has been started.

7. Repetir el paso 6 en todos y cada uno de los nodos restantes del cluster, uno a la vez; con las mismas consideraciones ya señaladas de detener todas las instancias (RAC) que estén operando en el nodo de turno o moverlas a otros nodos (RAC One Node).

 

¡Felicitaciones!, si llegaste a este punto entonces ya tienes un Cluster operando con el patch que planificaste aplicar, y solo tuviste que suspender el servicio por muy pocos minutos.

Nuevos patches por aplicar

 

Si bien luego de tener operativo el nuevo GI home directory es posible deshacernos del anterior (con el utilitario "detach"), lo recomendable es mantenerlo y usarlo para el siguiente patch que necesitemos aplicar. De hacerlo así, ya no es necesario copiar el GI home directory activo, ni ejecutar la clonación, sino que podemos proceder directamente con la aplicación del patch sobre lo que antes era el GI home directory activo.

 

 

Al terminar con el patching sobre este GI home directory, en todos los nodos del cluster, ya se puede suspender el servicio y hacer el switch hacia este GI home directory, un nodo a la vez.

 

Conclusiones

 

Una de las responsabilidades de todo DBA es mantener el software Oracle Grid Infrastructure con los últimos patches recomendados, siendo un objetivo prioritario el interrumpir lo mínimo posible el servicio al aplicarlos. En este escenario es altamente recomendable ejecutar un Rolling Out-of-Place Patching, empleando un clon del GI home directory en uso. Esto permite retrasar la suspensión del servicio hasta el momento en que tengamos el patch debidamente aplicado, y también nos permite resolver con calma cualquier problema que se presente durante esta tarea, algo que nos generaría una situación de tensión en caso estuviésemos trabajando sobre el GI home directory en uso (In-Place Patching) y algo saliera mal, lo que nos obligaría a mantener suspendido el servicio por más tiempo del programado, y lo que es peor, a abortar todo el proceso en caso no demos con la solución y ya no podamos mantener por más tiempo la suspensión del servicio.

____

1. Si tienes la noción de lo que es un patch pero no te queda muy claro que es un IP, PSU o SPU, te recomiendo leer el Note 1430923.1 New Patch Nomenclature for Oracle Products.

2. Leer el Note 274526.1 How To Download And Install The Latest OPatch Version.