El RAC se queda en estado [ROLLING PATCH]

Hoy vamos a ver una entrada sobre ago que puede dar mucho miedo pero que tiene una solucion muy sencila
Pongamos que tras aplicar una serie de parches comprobamos la version de nuesrto softare en el RAC y nos encontramos lo siguiente

[oracle@rac1~]$ sudo  $ORACLE_HOME/bin/crsctl query  crs  activeversion -f
Oracle Clusterware active version on the cluster is [19.0.0.0.0]. The cluster upgrade state is [ROLLING PATCH]. The cluster active patch level is [724960844].

Oracle Clusterware patch level on node rac1is [2701864972].
[oracle@rac1~]$ sudo  $ORACLE_HOME/bin/crsctl query  crs  softwarepatch rac2
Oracle Clusterware patch level on node rac2 is [387459443].

De alguna manera que no alcanzamos a entender ( o igual si), tenemos que tras finalizar un parcheado los parches de los dos nodos son iguales.

Que hacemos ??

Veamos a ver cuales son los parches que tenemos instalados.
Lo primero que se nos viene a la cabeza es tirar del comando optch
Y ecejutamos un
$ORACLE_HOME/OPatch/opatch -lsinventory
o bien
$ORACLE_HOME/OPatch/opatch -lspatches
Pero, para nuestra desesperacion resulta que Opatch nos dice que hay los mismos parches instalados.
¿que hacemos ahora?

La solucon esta en patchgen

Vamos a ver realmente que es lo que tenemos instalado en los nodos.
Para ello usaremos en ambos nodos el comando
$ORACLE_HOME/bin/kfod op=patches

[oracle@rac1~]$  $ORACLE_HOME/bin/kfod op=patches
---------------
List of Patches
===============
30489227
30489632
30557433
30655595

[oracle@rac2~]$ $ORACLE_HOME/bin/kfod op=patches
---------------
List of Patches
===============
29517242
29517247
29585399
30489227
30489632
30557433
30655595

Como podemos ver, en el rac2 nos aparecen 3 parches que no tenemos en rac1.
El siguiente paso deberia de ser el buscar cuales son esos parches y decidir si los queremos aplicar donde no estan , o quitrlos de donde estan.
Dado que quitar un parche suele ser mas complicado que ponerlo , vamos ha hacer esta segunda opcion y a eliminar esos 3 parches de rac2.

Para ello,lo primero que tendremos que hacer es como usuario root

. oaenv
 $ORACLE_HOME/crs/install/rootcrs.sh -prepatch

Y tras esto, eliminaremos los parches con

$ORACLE_HOME/bin/patchgen commit -rb 29517242 
$ORACLE_HOME/bin/patchgen commit -rb 29517247
$ORACLE_HOME/bin/patchgen commit -rb 29585399

Una vez eliminados, comprobamos d enuevo con kfod que tenemos solamente los parches deseados, y sera en ese momento cuando cerremos la operacion con (de nuevo como root)

 $ORACLE_HOME/crs/install/rootcrs.sh -postpatch

Tras esto solamente tenemos que comprobar que el estado del cluster es normal y que las versiones y parches son los correctos

[oracle@rac1~]$) crsctl query crs softwarepatch -all
Oracle Clusterware patch level on node rac1 is [2701864972].
[oracle@rac1~]$ crsctl query crs activeversion  -f
Oracle Clusterware active version on the cluster is [19.0.0.0.0]. The cluster upgrade state is [NORMAL]. The cluster active patch level is [2701864972].
[oracle@rac1~]$ crsctl query crs releasepatch
Oracle Clusterware release patch level is [2701864972] and the complete list of patches [30489227 30489632 30557433 30655595 ] have been applied on the local node. The release patch string is [19.6.0.0.0].
[oracle@rac2~]$ crsctl query crs releasepatch
Oracle Clusterware release patch level is [2701864972] and the complete list of patches [30489227 30489632 30557433 30655595 ] have been applied on the local node. The release patch string is [19.6.0.0.0].

Mas informacion como siempre en la documentacion de oracle

  • Troubleshooting OPatchAuto
  • KFOD, KFED, AMDU (Doc ID 1485597.1)
  • Note 1180491.1 – KFED Tool For Windows OS
  • Note 1346190.1 – KFED.PL for diagnosing – ORA-15036 ORA-15042 ORA-15020 ORA-15033
  • Note 1505005.1 – Where to find kfed utility before Oracle Grid Infrastructure is installed

Comandos basicos en Orace RAC

Hoy vamoa a volver a las entradas para dummies, esta vez con los comandos basicos del RAC

Como paramos un RAC?

La manera mas sencilla escon permisos de root mediante el comando

export ORACLE_SID=+ASM1
export ORAENV_ASK=NO
. oraenv
sudo $ORACLE_HOME/bin/crsctl stop crs
sudo $ORACLE_HOME/bin/crsctl disable crs 

A la hora de arrancarlo ejecutaremos

export ORACLE_SID=+ASM1
export ORAENV_ASK=NO
. oraenv
sudo  $ORACLE_HOME/bin/crsctl enable crs
sudo $ORACLE_HOME/bin/crsctl start crs  

Como arrancamos/paramos una base de datos

srvctl stop database -d $DB_NAME

srvctl start database -d $DB_NAME

Como arrancamos/paramos una instancia en un nodo

Podemos hacerlo de varias maneras

srvctl start instance -d $DB_NAME-n $NODE_NAME 
srvctl start instance -d $DB_NAME -i $INSTANCE_NAME

Para pararla seria similar cambiando el start por stop

srvctl stop instance -d $DB_NAME-n $NODE_NAME 
srvctl stop instance -d $DB_NAME -i $INSTANCE_NAME

Parar elementos dedicados del RAC

Hay algunos componentes dedicados del RAC que no funcionan con la sintaxsis estandard, estos son:

  • Management database
  • ASM prxy

Administracion de la Management database

Los comados que podemos llevar a cabo sobre la management database son stop y relocate

srvctl start mgmtdb -n  $NODENAME 

srvctl stop mgmtdb -n $NODENAME 

srvctl relocate mgmtdb -n $OTRO_NODO

Administracion del ASM proxy

srvctl start res ora.proxy_advm -n  $NODENAME 

srvctl stop res ora.proxy_advm -n  $NODENAME

comandos sobre el CRS

Podemos ver la entrada Comprobar versiones del cluster

Comandos sobre el OCR

Podemos verlos en la entrada Oracle cluster registry OCR (componentes del grid)

Comandos sobre los voting disk

Podemos verlos en la entradas
Redundancia de los votingdisk en ASM
Voting disk (componentes del grid)

Comandos sobre ADVM

Introducción al ADVM

Mas entradas para dummies sobre RAC:
Comandos basicos en Orace RAC
Comandos basicos del RAC II
Eliminar un nodo del rac

Configurar el CRS de la 12.2 sin tener ASM

Hoy vamos a ver una entrada sencilla que puede habernos traido dolores de cabeza.

Con los nuevos cambios en la instalacion en la version 12.2 al instalar el crs ( que no deja de ser un «unzip») nos encontramos que el binario crsctl no esta lincado.

Cuando intentamos usar el configuratdor del CRS ($GI_HOME/gridSetup.sh ), nos encontramos que nos exige el ASM para poder continuar, asi que
¿Como podemos configurar nuestro CRS sin ASM ?
La solucion es muy sencilla, y pasa por ejecutar el comando roothas.pl
Como usuario root ejecutaremos

export GI_HOME=/u01/app/oracle/product/12.2.0.1/grid
$GI_HOME/perl/bin/perl -I $GI_HOME/perl/lib -I $GI_HOME/crs/install
$GI_HOME/crs/install/roothas.pl

Con esto conseguiremos el ultimo proceso de lincado , que es el que crea los binarios crscrl y la configuracion de nuestro grid a nivel de sistema operativo.

Hemos de tener en cuenta que , este proceso no crea el listener, asi que, como usuario oracle y con las variables de entorno del grid cargado deberemos de ejecutar despues

srvctl add listener -oraclehome $ORACLE_HOME -listener LISTENER 

Comprobar versiones del cluster

Hoy vamos a ver otra de estas entradas sencillas que nos pueden llegar a ser de utilidad llegado el caso

Hay veces ( especialmente en los momentos del parcheado) que queremos saber la version de los componentes del cluster. En estos casos podemos tener varios binarios en la máquina y que sean distintos a el software que está corriendo, o distintas versiones entre distintos componentes del cluster, para ello tenemos las opción query del crsctl .
Las opciones que nos serán útiles son:

  • b>releaseversion: Muestra la versión de los binarios instalados en el nodo local. Este comando puede ser “engañado” modificando la variable PATH
  • activeversion: Muestra la versión que está funcionando. Durante un rolling upgrade la activeversion no cambiará hasta que el upgrading finalize. La activeversion siempre es la versión mas baja entre todos los nodos del cluster.
  • softwareversion:Es el contrario de activeversion, nos indicará la ultima versión instalada en el cluster, también puede indicarnos la version mas alta instalada en uno de los nodos.

Algunos ejemplos de la salida son:

[grid@rac1 ]# crsctl query crs releaseversion
Oracle High Availability Services release version on the local node is [11.2.0.4.0]
 
[grid@rac1 ]# crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [11.2.0.4.0]
 
[grid@rac1 ]# crsctl query crs softwareversion
Oracle Clusterware version on node [rac1] is [11.2.0.4.0]
En single node no
[grid@rac1 ]# crsctl query has releaseversion
Oracle High Availability Services release version on the local node is [11.2.0.4.0]

Voting disk (componentes del grid)

Vamos a dedicar una serie de entradas a explicar los distintos componentes del Grid infraestructurae de Oracle a partir de la version 11gR2

El voting disk es usado por el demonio de sincronización de servicios (ocssd Oracle cluster sincronization services daemon) para comprobar el estado de los nodos del disco.
Cada uno de los nodos envía en intervalos predeterminados un herbeat por la red para indicar a el resto que está vivo. Si el resto determina que uno de los nodos está muerto entonces le hace un “fence” para evitar corrupción de datos o un split brain.
Cada nodo debe de enviar un hearbeat por red por segundo y escribir un herbeart por voting disk por segundo. Si un nodo no hiciera ambas cosas, el resto de nodos comenzarían un proceso de reconfiguración que, sirve para comprobar qué nodos están vivos que básicamente es que cada nodo indica cuales encuentra como vivos y cuáles no .
A los nodos que no contestan se les envía un “poison packet via network and disk” y se les saca del cluster.

En las versiones anteriores el voting file debía de ser un sistema compartido de red (NFS,OCFS.. ), pero en la versión 11gR2 ya puede ser un disco de ASM (Es aconsejable ir pasándolos a ASM ya que podrían ser de-soportados los otros tipos de voting)

Si usas OCFS para el voting file, se aconseja el uso de 3 o 5 copias del voting file, aunque el máximo es de 15. En caso de uso del ASM no puedes determinarlo ya que es transparente y dependen del tipo de redundancia del ASM (external,normal,hit). En el caso de tener redundancia interna de ASM (normal/high),oracle chequea que tengas el número de discos mencionados anteriormente, conlo que deberás de tener un mínimo de 3 failure groups en redundancia normal y 5 en high. Si no los tuvieras, recibirás un error indicándote lo :

ORA-15273: Could not create the required number of voting files
ORA-15274 ...

En la versión 11gR2, el voting file, registro local y el perfil de Grid Plug and Play (GPnP) tienen toda la información necesaria del cluster por lo que no dependen del OCR, sin embargo el OCR es necesario para administrar los recursos del cluster

El voting disk se ubica en un disco de ASM individual, esto hace que el Cluster Synchronization Services daemon (CSSD) acceda directamente al contenido de los voting disk, lo que le permite arrancarse antes que los propios discos de ASM

En la versión 11gR2 de Oracle el backup del voting disk se lleva a cabo automáticamente con el backup el OCR.

El comando con el que administraremos el voting disk es el crscrtl, la sintaxsis de las acciones mas comunes es:


[grid@rac1 oracle]$ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   731fe6f479734f1fbf75ed0d30b3e76b (/dev/asmdisk_sdb1) [OCRQUORUM]
Located 1 voting disk(s).

También prodríamos añadir un votedisk

[grid@rac1 oracle]$ crsctl add css votedisk /shared/vfile1 

Reemplazar un votedisk

[grid@rac1 oracle]$ crsctl replace votedisk /shared/vfile1
  /shared2/vfile2 

O eliminar un votedisk

[grid@rac1 oracle]$ crsctl delete votedisk  /shared2/vfile2 

Como siempre, mas información en la documentación de Oracle en:
http://docs.oracle.com/cd/E11882_01/rac.112/e16794/crsref.htm#CWADD91143