Troubleshooting Oracle Clusterware: diagcollection.pl

Hoy vamos a ver una entrada sencilla sobre como recopilar información del Clusterware para enviar a Oracle.
Diagcollecton.sh es un script del CRS que recolecta los logs del CRS del nodo local , es un wrapper sobre el perl diagcollection.pl
Obtiene información sobre:
• Cluster Synchronization Services (CSS),
• Event Manager (EVM),
• Cluster Ready Services (CRS) daemons.
Este log suele ser solicitado por soporte Oracle , El tamaño es bastante grande ( del orden de 1,1 Gb )

La forma de uso es muy sencilla,solamente hay que buscarlo bajo el arbol de directorios del GRID.

Esta herramienta va a buscar también información sobre el sistema operativo, con lo que será conveniente su ejecución como root

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]

Procesos background de ACFS

Una vez tenemos un dispositivo bajo /dev/asm/ podemos trabajar con el como si de un disco normal fuera, pero, para poder trabajar en un sistema en cluster necesitaremos ACFS o una solución de terceros.

Procesos background de ACFS

Oracle lanza nuevos procesos para las instancias de ASM que tienen asociados filesystems ACFS
Estos procesos son :

00:00:04 asm_vdbg_+ASM1
00:00:00 asm_vmb0_+ASM1
00:00:00 asm_vbg0_+ASM1
00:00:43 asm_acfs_+ASM1

VDBG.- Volume driver background (asm_vdbg_+ASM1)

Este proceso es el encargado de pasarlas peticiones del ASM al driver de ASDM.
Es tan importante que si muriera de manera no planificada tiraría abajo la instancia ASM

VBGn Volume background process (asm_vmb0_+ASM1)

Es un pool de procesos worker que son los que se encargan de las peticiones entre ASM y ADVM
El nombre es muy similar al anterior,, pero el otro acaba en G y estos en numero

ACFS background process (asm_acfs_+ASM1)

Gestionan todas las transiciones del estado de los miembros del cluster en el ACFS

ACFS background process (asm_acfs_+ASM1)

Gestionan todas las transiciones del estado de los miembros del cluster en el ACFS

Volume Menbership background process (asm_vmb0+ASM1)

The Volume Membership Background processes (VMB0) plays the role of an I/O barrier and I/O fencing function. Interestingly, during an ASM instance failure, this process continues to exist until the ADVM driver has had a chance to write out pending I/O. +ASM_vmb_.trc

Redundancia de los votingdisk en ASM

Hoy vamos a ver un a entrada sencilla sobre la redundancia en los voting disk.
Supongamos tenemos un RAC con un votedisk en un grupo de ASM externo.

[grid@rac1 ~]$ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   9711d76755664f81bfeac1daf04aefcf (/dev/oracleasm/disks/OCRVOTING) [OCRVOTING]
Located 1 voting disk(s).

[grid@rac1 ~]$ ocrcheck
Status of Oracle Cluster Registry is as follows :
	 Version                  :          3
	 Total space (kbytes)     :     262120
	 Used space (kbytes)      :       2692
	 Available space (kbytes) :     259428
	 ID                       :  241611837
	 Device/File Name         : +OCRVOTING
                                    Device/File integrity check succeeded
                                    Device/File not configured
                                    Device/File not configured
                                    Device/File not configured
                                    Device/File not configured
	 Cluster registry integrity check succeeded
         Logical corruption check bypassed due to non-privileged user

Nosotros tenemos un DISKGROUP de ASM con redundancia HIGH , y queremos llevar nuestro votingdisk a este disco .

column name format a20;
column state format a20;
column type format a20;
select NAME,STATE,TYPE from v$asm_diskgroup;

NAME		     STATE		  TYPE
-------------------- -------------------- --------------------
OCRVOTING	     MOUNTED		  EXTERN
REDO		     DISMOUNTED
DATA		     MOUNTED		  HIGH
ACFS		     DISMOUNTED
OCRASM		     MOUNTED		  EXTERN

Ejecutamos el comando crsctl replace votedisk +DATA y recibiremos el siguiente error:

[grid@rac1 ~]$ crsctl replace votedisk +DATA
Failed to create voting files on disk group DATA.
Change to configuration failed, but was successfully rolled back.
CRS-4000: Command Replace failed, or completed with errors.

¿Como podemos saber mas de este error?

Vamos a mirar el alert.log del asm

tail -900 /u01/app/oracle/diag/asm/+asm/+ASM1/trace/alert_+ASM1.log
TE: [crsctl.bin@rac1.pamplona.name (TNS V1-V3) 20094] opening OCR file
Wed Aug 19 11:39:20 2015
NOTE: updated gpnp profile ASM diskstring: /dev/oracleasm/disks/*
Wed Aug 19 11:39:20 2015
NOTE: Creating voting files in diskgroup DATA
Wed Aug 19 11:39:20 2015
NOTE: Voting File refresh pending for group 3/0xe73953ba (DATA)
NOTE: Attempting voting file creation in diskgroup DATA
NOTE: voting file allocation on grp 3 disk DATA_0000
NOTE: voting file allocation on grp 3 disk DATA_0001
NOTE: voting file allocation on grp 3 disk DATA_0002
ERROR: Voting file allocation failed for group DATA
Errors in file /u01/app/oracle/diag/asm/+asm/+ASM1/trace/+ASM1_ora_20102.trc:

Y que error tenemos en este fichero de traza?

cat /u01/app/oracle/diag/asm/+asm/+ASM1/trace/+ASM1_ora_20102.trc
..
.

*** 2015-08-19 11:39:24.754
Updating headers of disk /dev/oracleasm/disks/ASM03 with 96 128
PST-new:0x7f6053f8fe60:0x9f1d9478:45:
  /dev/oracleasm/disks/ASM03:67f2cd24882e4f46bfe07f85554e0d33:
ORA-15274: Not enough failgroups (5) to create voting files

Como podemos ver, el GRID ha visto que nuestro grupo de ASM no cuenta con 5 failgroups ( solamente cuenta con 3 discos), con lo que ha echado atrás la operación.

Que pasaría si quisiesemos llevarlo a otro external?

Si queremos llevarlo a otro external veremos que funciona correctamente.

[grid@rac1 ~]$ crsctl replace votedisk  +OCRASM
Successful addition of voting disk 5f3f3404c2cd4f24bfa6ca5de9494bba.
Successful deletion of voting disk 9711d76755664f81bfeac1daf04aefcf.
Successfully replaced voting disk group with +OCRASM.
CRS-4266: Voting file(s) successfully replaced

Y si quisiéramos añadir otra ASM con redundancia external?

[grid@rac1 ~]$ crsctl add css votedisk +OCRVOTING
CRS-4671: This command is not supported for ASM diskgroups.
CRS-4000: Command Add failed, or completed with errors.

Vemos como tampoco nos permite el poner el voting disk en 2 ASM DISKGROUPS

Conclusiones

Podemos beneficiarnos (y es aconsejable) de la redundancia del ASM para el voting disk, pero, hay que tener en cuenta que :

  • No podemos mezclar voting disk en asm y no asm
  • Voting disk necesita unos determinados failugre groups en ASM
    • External: No ha dependencia ya que se gestiona externamente
    • Normal: Deberemos de tener un mínimo de 3 failgroups
    • External: deberemos de terner un mínimo de 5 failgroups
  • Si usamos ASM para los voting disk la redundancia la marca el ASM