REDUNDANCIA PARA VOTING DISK

Si decides almacenar el fichero de voting disk en el mismo diskgroup de ASM que los ficheros de datos, añadir un grupo de fallo puede suponer añadir un montón de espacio y puede que esto suponga un problema. Para solucionar esto, se introduce un nuevo grupo de fallo tipo quorum. Cuando se añade este tipo de grupo, solamente se utiliza para añadir una copia extra de voting dik en ese grupo de fallo, lo cual permite que este disco sea mucho menor al resto que compone el grupo.

Generaríamos el disckgroup de esta manera, siendo FG1 y FG2 del mismo tamaño y FG3 mucho menor ya que solo va almacenar el voting disk.

CREATE DISKGROUP PRUEBA NORMAL REDUNDANCY
FAILGROUP FG1 DISK 'ORCL:PRUEBA01' NAME PRUEBA01
FAILGROUP FG2 DISK 'ORCL: PRUEBA02' NAME PRUEBA02
QUORUM FAILGROUP FG3 DISK 'ORCL: PRUEBA03' NAME PRUEBA03
ATTRIBUTE 'compatible.asm' = '11.2';

Como ejecutar un job en una instacia en concreto del RAC

Aquí pongo como ejecutar un job en una instancia en concreto del cluster. Si la instancia sobre la que se pide que se ejecute el job no está funcionando el job no se ejecuta.

DBMS_SCHEDULER.create_job

(job_name             => ‘FLUSH02_J’,

job_class            => ‘DEFAULT_JOB_CLASS’,

job_type             => ‘plsql_block’,

job_action           =>    ‘begin execute immediate(‘

|| ””

|| ‘alter system flush shared_pool’

|| ””

|| ‘); end;’,

repeat_interval      => v_repeat_interval

);

DBMS_SCHEDULER.set_attribute (NAME           => ‘FLUSH02_J’,

ATTRIBUTE      => ‘instance_id’,

VALUE          => 2

);

DBMS_SCHEDULER.ENABLE (‘FLUSH02_J’);

Borrar, añadir y mover un voting disk:

 En principio no es una operación complicada, ya que voting disk no guarda información esencial:

Lo primero parar clusterware como usuario root en todos los nodos:

 crsctl stop crs 
 

Para obtener los voting disk actuales:

crsctl query css votedisk 
 

Este comando lista los voting disks utilizados por el Cluster Synchronization Services(CSS).

Para añadir un voting disk, como usuario root sustituyendo la variable path por nombre y el path complete del voting disk que queremos borrar:

crsctl add css votedisk path -force 
 

Para mover un voting disk :

crsctl delete css votedisk path -force 
crsctl add css votedisk path -force

Para borrar un voting disk:

 crsctl delete css votedisk path –force
 

La opción force solo se puede utilizar cuando clusterware este parado sino puede corromper la configuración.

Después de modificar los voting disk, reiniciar Oracle Clusterware utilizando el siguiente comando en todos los nodos :

crsctl start crs 
 

Y para verificar que el cambio se ha hecho correctamente:

crsctl query css votedisk
 

Cambio de VIP en clusteraware

 El cambio de VIP se tiene que hacer cuando el cluster este apagado.

Comporbando la configuración VIP actual:

 1. Comprobar la configuración actual.

     $srvctl config nodeapps -n -a
     eg:
     $srvctl config nodeapps -n racnode1 -a
     VIP exists.: /racnode1-vip/101.17.80.184/255.255.254.0/eth1

 2. Verificar el estatus de VIP.

     $crs_stat -t -
     it should show VIPs are ONLINE As root user
     #ifconfig -a

Para los recursos

3. Parar los recursos nodeapps y todos sus recursos dependientes (Para las instancias de stop ASM/): 10g y 11gR1, como el dueño de CRS:

     $srvctl stop database -d <database>
     $srvctl stop asm -n <node1> 
     $srvctl stop asm -n  <node2>
     $srvctl stop nodeapps -n <node1>
     $srvctl stop nodeapps -n <node2>

Para evitar que ASM y la base de datos se levanten automáticamente antes del cambio es aconsejable deshabilitarlos:

     $srvctl disable database -d <node 1>
     $srvctl disable asm -n <node 1>
     $srvctl disable asm -n <node2>

4. Verificar que la VIP está OFFLINE y que la interfaz no esta vinculada a la interfaz de red pública.

     $crs_stat -t

 Como usuario root:

    $ifconfig -a

Modificar la VIP y sus atributos asociados

5. Determinar la nueva IP/subnet/mascara para la VIP, hacer primero el cambio en el sistema operativo, asegurarse que la nueva VIP está registarda en DNS o modificar el /etc/hosts (Si se cambia el interfaz de red, asegurarse que el nuevo interfaz está disponible en el servidor antes de modificarlo).

Por ejemplo:

 La nueva VIP es: 110.11.70.11 racnode1-nvip la nueva subnet es 110.11.70.0 la nueva mascara es 255.255.255.0 la nueva interfaz es eth2

6.Modificar el recurso de VIP. como usuario:

     #cd /opt/app/11.1.0/crs/bin
     #./srvctl modify nodeapps -n -A //
     #./srvctl modify nodeapps -n -A //
     eg:
     #./srvctl modify nodeapps -n racnode1 -A racnode1-nvip/255.255.255.0/eth2\eth3
     #./srvctl modify nodeapps -n racnode2 -A racnode2-nvip/255.255.255.0/eth2\eth3

7. Verificar el cambio

    $./srvctl config nodeapps -n -a
    $./srvctl config nodeapps -n -a
    eg:
     $./srvctl config nodeapps -n racnode1 -a
    VIP exists.: /racnode1-nvip/110.11.70.11/255.255.255.0/eth2\eth3

Reiniciar los recursos:

8. Levantar nodeapps y los demás recursos Si los recursos están disabled ponerlos enable antes.

     $srvctl enable asm -n  <node 2>
     $srvctl enable asm -n  <node 1>
     $srvctl enable database -d <database>

        Como usuario Oracle:

       $srvctl start nodeapps -n <node 1>
       $srvctl start nodeapps -n <node 2>
       $srvctl start asm -n <node 2>
       $srvctl start asm -n <node 1>
       $srvctl start database -d <database>
       eg:
       $srvctl start nodeapps -n racnode1
       $srvctl start nodeapps -n racnode2
       $srvctl start asm -n racnode1
       $srvctl start asm -n racnode2
       $srvctl start database -d ASDB
     

 9 Verificar que la nueva VIP está ONLINE y se une a la interfaz de red publica

      $crs_stat -t
 As root user
      $ifconfig -a

Otros

11. Modificar el listener.ora y tnsnames.ora con la nueva IP.

Error en la instalación de un clusterware en Oracle 10.1.0.3 a 11.1.0.7

El Cluvfy falla cuando el banner está activado., nosotros hemos visto que a veces el cluster verify no da error pero la instalación si.
1. Cuando se ejecuta el cluvfy podemos ver el siguiente error:

$ cluvfy comp admprv -n node4,node5 -o user_equiv -sshonly -verbose
Verifying administrative privileges
Checking user equivalence...
Check: User equivalence for user "oracle"
Node Name Comment
------------------------------------ ------------------------
node5 passed
node4 failed
Result: User equivalence check failed for user "oracle".
Verification of administrative privileges was unsuccessful.
Checks did not pass for the following node(s):
node4

Solución
1. Borrar los mensajes de banner.
Este problema está corregiso en el cluvfy disponible para 11.2 que se puede descargar del siguiente link:
http://www.oracle.com/technology/products/database/clustering/cvu/cvu_download_homepage.html
A pesar de esto es recommendable borrar el banner en le momento de instalaciones, actualizaciones e instalación de parches
2. Donde están configurados los banners:
Los banners pueden estar modificados en estos ficheros, y el contenido original.

/etc/motd
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
/etc/default/ telnetd
#ident  "@(#)telnetd.dfl        1.1     01/11/01 SMI"
#
# Copyright (c) 2001 by Sun Microsystems, Inc.
# All rights reserved.
#
# /etc/default/telnetd
#
# telnetd default settings processed via telnetd(1M).
#
# BANNER defines the connection banner which is displayed before the
# telnet login prompt, see telnetd(1M) for details.  The following
# commented line shows the default value.
#
#BANNER="\\r\\n\\r\\n`uname -s` `uname -r`\\r\\n\\r\\n"
#
#
# Suppress the telnet banner by supplying a null definition.
#
BANNER=""

Cómo se levanta Clusterware 11.1.X

 Los comandos para levantarlo y pararlo son los siguientes:

crsctl stop crs
crsctl start crs

Para levantar los demonios de clusterware se utiliza un script que se ejecuta como usuario root.

 Los scripts de inicio de clusterware se pueden encontrar en:

 • /etc/init.d (Sun, Linux)

Se llaman:

 • init.cssd: levanta los demonios ocssd.bin, oclsomon, oprocd y oclsvmon.

 • init.evmd: levanta el demonio evmd.bin. . init.crsd: levanta el demonio crsd.bin

 • init.crs : levanta, para, habilita y deshabilita

 El arranque automático de clusterware se realice en 3 pasos:.

 1. Se Ejecuta el script init.d rc*.d para permitir que clusterware se reinicie o no (dependiendo si está o no habilitado) después de un reinicio

Nota: El init.* scripts no se debe ejecuta nunca manualmente, para habilitar o deshabilitar el reinicio automático utilizar, cualquiera de estos dos comandos:

$ crsctl disable crs
 $ init.crs disable
$ crsctl enable crs
$init.crs enable

Cuando los scripts rc*.d se ejecutan al nivel de ejecución del sistema operativo, el init.crs start determina si debe o no levantar Clusterware dependiendo del modo del sistema operativo.

 2.Si la instalación ha ido bien se crearan tres entradas en el initab encargadas de levantar clusterware:

h1:3:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1 </dev/null
h2:3:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1 </dev/null
h3:3:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1 </dev/null

Los prerrequisitos se comprueban con la ejecución de ‘init.cssd startcheck’

 Los scripts de Clusterware comprueban si Clusterware reúne los prerrequisitos básicos y está disponible para levantarse. init.cssd startcheck. El ultimo scripts necesita devolver un código 0 para permitir que Clusterware se levante sin problema y en caso de error deja en /tmp/crsctl.xxxx ficheros de error con los mensajes pertinentes.

Este script lo que hace es ejecutar como usuario oracle el siguiente comando ‘su -l oracle’ crsctl check boot

 La ejecución de este comando no debe devolver nada para que se permita a Clusterware levantarse. Puede devolver errores como estos:

 ‘ no read access to the ocr’

 ‘clustered ip is not defined’

‘$CRS_HOME is not mounted’

Una vez que los tres prerrequisitos se cumplen Clusterware inicia ejecutables *.bin, los cuales se pueden confirmarse utilizando el siguiente comando :

 'ps -ef grep .bin':
 oracle 9311 19610 0 Nov20 /opt/app/oracle/product/crs/bin/oclsomon.bin
oracle 9547 18245 0 Nov20 /opt/app/oracle/product/crs/bin/ocssd.bin
oracle 8415 18005 0Nov20 /opt/app/oracle/product/crs/bin/evmd.bin
root 8639 16555 0 Nov20 /opt/app/oracle/product/crs/bin/crsd.bin

Failed to upgrade Oracle Cluster Registry configuration

Hoy no hemos encontrado con este error al ejecutar el script root.sh en una instalación de clusterware:

Executing /opt/app/11.1.0/crs/root.sh 
==================================================
Checking to see if Oracle CRS stack is already configured
Setting the permissions on OCR backup directory Setting up Network socket directories 
Failed to upgrade Oracle Cluster Registry configuration

Esto error se produce cuando el root.sh intenta hacer el esta llamada:

1. Calls ocrconfig -upgrade to upgrade Oracle Cluster Registry contents from 9.2 to 10i format.
if $CH/bin/ocrconfig -upgrade $CRS_ORACLE_OWNER $CRS_DBA_GROUP;

El error se produce porque en sistemas operativos solaris el cilindro 0 del disco no se puede ocupar.

Lo primero que hay que hacer es determinar sobre que disco esta situado el ocr y verificar con el format (verify) si el cilindro 0 esta libre:

bash-3.00# ls -la /dev/rdsk/ocr
lrwxrwxrwx   1 root     root          49 May 19 16:55 /dev/rdsk/ocr -> /dev/rdsk/c4t600A0B8000761CEC000002504DD4D3AEd0s0
bash-3.00#
format> verify
Primary label contents:
Volume name = <     ocr>
ascii name  = <SUN-LCSM100_F-0735 cyl 510 alt 2 hd 64 sec 64>
pcyl        =  512
ncyl        =  510
acyl        =    2
nhead       =   64
nsect       =   64
Part      Tag    Flag     Cylinders       Size            Blocks
  0       root    wm       0 - 509     1020.00MB    (510/0/0) 2088960
  1 unassigned    wu       0              0         (0/0/0)         0
  2     backup    wu       0 - 509     1020.00MB    (510/0/0) 2088960
  3 unassigned    wm       0              0         (0/0/0)         0
  4 unassigned    wm       0              0         (0/0/0)         0
  5 unassigned    wm       0              0         (0/0/0)         0
  6 unassigned    wm       0              0         (0/0/0)         0
  7 unassigned    wm       0              0         (0/0/0)         0
 

Lo que está en rojo debería ser un 1, como explica la nota de metalink  367715.1