Oracle 12cR1 : Evaluación "What-If" de un comando crsctl con Oracle Clusterware
- by grantunez-Oracle
Oracle en su nueva version 12cR1 introdujo una nueva y pequeña característica  al Oracle Clusterware, pero el que sea pequeña, no significa que no sea de gran utilidad.  
  En versiones anteriores, si queríamos saber que iba a pasar al ejecutar un comando con la herramienta crsctl, teníamos que hacerlo en un ambiente de pruebas, ya que si no sabíamos de que se trataba el comando, se convertía en algo muy peligroso hacerlo sobre producción. 
  En Oracle Clusterware 12cR1 se introduce la evaluación de comando tipo "What-If" en la herramienta mencionada anteriormente, crsctl eval, que lo que nos permite es ver , que va a suceder si ejecuta el comando, sin que realmente se ejecute el comando. 
  Primero vamos a ver que recursos tenemos arriba  
   [oracle@oel6-112-rac1 ~]$ crsctl stat res -t--------------------------------------------------------------------------------Name           Target  State        Server                   State details       --------------------------------------------------------------------------------Local Resources--------------------------------------------------------------------------------ora.ASMNET1LSNR_ASM.lsnr               ONLINE  ONLINE       oel6-112-rac1            STABLE               ONLINE  ONLINE       oel6-112-rac2            STABLEora.DATA.dg               ONLINE  ONLINE       oel6-112-rac1            STABLE               ONLINE  ONLINE       oel6-112-rac2            STABLEora.LISTENER.lsnr               ONLINE  ONLINE       oel6-112-rac1            STABLE               ONLINE  ONLINE       oel6-112-rac2            STABLEora.net1.network               ONLINE  ONLINE       oel6-112-rac1            STABLE               ONLINE  ONLINE       oel6-112-rac2            STABLEora.ons               ONLINE  ONLINE       oel6-112-rac1            STABLE               ONLINE  ONLINE       oel6-112-rac2            STABLEora.proxy_advm               ONLINE  ONLINE       oel6-112-rac1            STABLE               ONLINE  OFFLINE      oel6-112-rac2            CLEANINGora.LISTENER_SCAN1.lsnr      1        ONLINE  ONLINE       oel6-112-rac2            STABLEora.LISTENER_SCAN2.lsnr      1        ONLINE  ONLINE       oel6-112-rac1            STABLEora.LISTENER_SCAN3.lsnr      1        ONLINE  ONLINE       oel6-112-rac1            STABLEora.MGMTLSNR      1        ONLINE  ONLINE       oel6-112-rac1            169.254.247.50 192.1                                                             68.1.111,STABLEora.asm      1        ONLINE  ONLINE       oel6-112-rac1            STABLE      2        ONLINE  ONLINE       oel6-112-rac2            STABLE      3        OFFLINE OFFLINE                               STABLEora.cvu      1        ONLINE  ONLINE       oel6-112-rac1            STABLEora.gns      1        ONLINE  ONLINE       oel6-112-rac1            STABLEora.gns.vip      1        ONLINE  ONLINE       oel6-112-rac1            STABLEora.mgmtdb      1        ONLINE  ONLINE       oel6-112-rac1            Open,STABLEora.oc4j      1        ONLINE  ONLINE       oel6-112-rac1            STABLEora.oel6-112-rac1.vip      1        ONLINE  ONLINE       oel6-112-rac1            STABLEora.oel6-112-rac2.vip      1        ONLINE  ONLINE       oel6-112-rac2            STABLEora.orcl.db      1        OFFLINE OFFLINE      oel6-112-rac2            Instance Shutdown,STABLE 
        2        ONLINE  ONLINE       oel6-112-rac1            Open,STABLEora.scan1.vip      1        ONLINE  ONLINE       oel6-112-rac2            STABLEora.scan2.vip      1        ONLINE  ONLINE       oel6-112-rac1            STABLEora.scan3.vip      1        ONLINE  ONLINE       oel6-112-rac1            STABLE 
  Ahora lo que vamos a hacer , es evaluar que pasaría, si por ejemplo, el recurso de ASM llegara a fallar en nuestro nodo 
  [oracle@oel6-112-rac1 ~]$ crsctl eval fail resource ora.asm 
  Stage Group 1: 
  -------------------------------------------------------------------------------- 
  Stage Number Required Action  
  -------------------------------------------------------------------------------- 
       1     N Create new group (Stage Group = 2) 
       Y Resource 'ora.asm' (1/1) will be in state 
   [ONLINE|INTERMEDIATE] on server [oel6-112-rac1] 
       Y Resource 'ora.asm' (2/1) will be in state 
   [ONLINE|INTERMEDIATE] on server [oel6-112-rac2] 
  -------------------------------------------------------------------------------- 
   
  Stage Group 2: 
  -------------------------------------------------------------------------------- 
  Stage Number Required Action  
  -------------------------------------------------------------------------------- 
       1     N Resource 'ora.proxy_advm' (oel6-112-rac2) will 
   be in state [ONLINE|INTERMEDIATE] on server 
   [oel6-112-rac2] 
  --------------------------------------------------------------------------------  
  Como vamos a ver a continuación, no es lo mismo se decidiéramos detener el recurso, en este caso tenemos que forzarlo , ya que es un recurso que no se puede detener sin la opción "-f":  
  [oracle@oel6-112-rac1 ~]$ crsctl eval stop resource ora.asm 
  Stage Group 1: 
  -------------------------------------------------------------------------------- 
  Stage Number Required Action  
  -------------------------------------------------------------------------------- 
   
       1     N Error code [222] for entity [ora.asm]. Message 
   is [CRS-2529: Unable to act on 'ora.asm' because 
   that would require stopping or relocating 
   'ora.DATA.dg', but the force option was not 
   specified]. 
  -------------------------------------------------------------------------------- 
  [oracle@oel6-112-rac1 ~]$ crsctl eval stop resource ora.asm -f 
  Stage Group 1: 
  -------------------------------------------------------------------------------- 
  Stage Number Required Action  
  -------------------------------------------------------------------------------- 
       1     Y Resource 'ora.DATA.dg' (oel6-112-rac1) will be 
   in state [OFFLINE] 
       Y Resource 'ora.DATA.dg' (oel6-112-rac2) will be 
   in state [OFFLINE] 
       Y Resource 'ora.orcl.db' (2/1) will be in state 
   [OFFLINE] 
       Y Resource 'ora.proxy_advm' (oel6-112-rac1) will 
   be in state [OFFLINE] 
   
       2     Y Resource 'ora.asm' (1/1) will be in state 
   [OFFLINE] 
       Y Resource 'ora.asm' (2/1) will be in state 
   [OFFLINE] 
  --------------------------------------------------------------------------------  
  Como puedes ver, es una característica nueva y pequeña, pero bastante util para evaluar todos tus comandos de crsctl sin impactar a ninguno de tus recursos. Así te permitira valorar el impacto que tendra el comando que vas a ejecutar. 
  Puedes encontrar mas información en: 
  Utilizando el comando eval