Olá pessoal!

Hoje veremos como interromper e inicializar recursos individualmente utilizando outros binários: crs_start e crs_stop.

Características do crs_start e crs_stop:

  • Pode ser executado a partir de qualquer nó;
  • Deve ser executado com o usuário root;
  • Controla todos os nós;
  • Inicializa e interrompe individualmente os recursos gerenciados pelo Clusterware.

Alguns exemplos de uso:

Interrompendo o listener do nó MVRAC2 a partir do nó MVRAC1

[root@mvrac1 ~]# crs_stop ora.mvrac2.LISTENER_MVRAC2.lsnr
Attempting to stop `ora.mvrac2.LISTENER_MVRAC2.lsnr` on member `mvrac2`
Stop of `ora.mvrac2.LISTENER_MVRAC2.lsnr` on member `mvrac2` succeeded.

Verificando o status dos componentes:

[root@mvrac1 ~]$ crsstat
HA Resource                                        Target     State
-----------                                        ------     -----
ora.mvdb.db                                        ONLINE     ONLINE on mvrac1
ora.mvdb.mvdb1.inst                                ONLINE     ONLINE on mvrac1
ora.mvdb.mvdb2.inst                                ONLINE     ONLINE on mvrac2
ora.mvdb.producao.cs                               ONLINE     ONLINE on mvrac1
ora.mvdb.producao.mvdb1.srv                        ONLINE     ONLINE on mvrac1
ora.mvdb.producao.mvdb2.srv                        ONLINE     ONLINE on mvrac2
ora.mvrac1.ASM1.asm                                ONLINE     ONLINE on mvrac1
ora.mvrac1.LISTENER_MVRAC1.lsnr                    ONLINE     ONLINE on mvrac1
ora.mvrac1.gsd                                     ONLINE     ONLINE on mvrac1
ora.mvrac1.ons                                     ONLINE     ONLINE on mvrac1
ora.mvrac1.vip                                     ONLINE     ONLINE on mvrac1
ora.mvrac2.ASM2.asm                                ONLINE     ONLINE on mvrac2
ora.mvrac2.LISTENER_MVRAC2.lsnr                    OFFLINE    OFFLINE
ora.mvrac2.gsd                                     ONLINE     ONLINE on mvrac2
ora.mvrac2.ons                                     ONLINE     ONLINE on mvrac2
ora.mvrac2.vip                                     ONLINE     ONLINE on mvrac2

Inicializando o listener do nó MVRAC2 a partir do nó MVRAC1:

[root@mvrac1 ~]# crs_start ora.mvrac2.LISTENER_MVRAC2.lsnr
Attempting to start `ora.mvrac2.LISTENER_MVRAC2.lsnr` on member `mvrac2`
Start of `ora.mvrac2.LISTENER_MVRAC2.lsnr` on member `mvrac2` succeeded.

Verificando o status dos componentes:

[root@mvrac1 ~]# crsstat
HA Resource                                        Target     State
-----------                                        ------     -----
ora.mvdb.db                                        ONLINE     ONLINE on mvrac1
ora.mvdb.mvdb1.inst                                ONLINE     ONLINE on mvrac1
ora.mvdb.mvdb2.inst                                ONLINE     ONLINE on mvrac2
ora.mvdb.producao.cs                               ONLINE     ONLINE on mvrac1
ora.mvdb.producao.mvdb1.srv                        ONLINE     ONLINE on mvrac1
ora.mvdb.producao.mvdb2.srv                        ONLINE     ONLINE on mvrac2
ora.mvrac1.ASM1.asm                                ONLINE     ONLINE on mvrac1
ora.mvrac1.LISTENER_MVRAC1.lsnr                    ONLINE     ONLINE on mvrac1
ora.mvrac1.gsd                                     ONLINE     ONLINE on mvrac1
ora.mvrac1.ons                                     ONLINE     ONLINE on mvrac1
ora.mvrac1.vip                                     ONLINE     ONLINE on mvrac1
ora.mvrac2.ASM2.asm                                ONLINE     ONLINE on mvrac2
ora.mvrac2.LISTENER_MVRAC2.lsnr                    ONLINE     ONLINE on mvrac2
ora.mvrac2.gsd                                     ONLINE     ONLINE on mvrac2
ora.mvrac2.ons                                     ONLINE     ONLINE on mvrac2
ora.mvrac2.vip                                     ONLINE     ONLINE on mvrac2

Vocês puderam observar que é necessário especificar o nome completo do recurso, diferentemente do srvctl onde especificamos os recursos através de flags (-n para nó, -d para database, -i para instancia, etc…).

Comparando o crs_start/crs_stop com o srvctl, podemos verificar que o controle de cada recurso individual é mais fino no crs_start/crs_stop, já que no srvctl temos o recurso NODEAPPS que controla os recursos listener, gds, ons e vip. Cada recurso desse pode ser controlado manualmente pelo crs_start/crs_stop.

Além de inicializar/interromper os recursos, ele também “atualiza” o status dos componentes no OCR. Isso pode ser necessários em determinadas ocasiões onde o recurso está OFFLINE mas o seu alvo consta como ONLINE (no caso de uma máquina que não foi inicializada), ou qualquer outra situação.

O recurso pode ser “forçado” a ficar em OFFLINE a partir do crs_stop com a opção -f (force):

[root@mvrac1 ~]# crs_stop ora.mvrac2.LISTENER_MVRAC2.lsnr -f

Bom, o uso do crs_start e crs_stop é bem limitado. Eu só utilizo* esses binários nestas situações específicas.

Também há o binário crs_relocate.

Ele é utilizado para reposicionar um recurso do Clusterware.

Reposicionando o VIP:

[root@mvrac1 ~]# crs_relocate ora.mvrac1.vip
mvrac2 : CRS-1022: Resource ora.mvrac1.LISTENER_MVRAC1.lsnr (application) is running on mvrac1

CRS-0223: Resource 'ora.mvrac1.vip' has placement error.

Se eu tentar fazer o relocate do VIP com o listener no ar, eu receberei esse erro acima, pois o listener é um recurso dependente do VIP.

Neste caso, eu interrompo primeiro o listener:

[root@mvrac1 ~]# crs_stop ora.mvrac1.LISTENER_MVRAC1.lsnr
Attempting to stop `ora.mvrac1.LISTENER_MVRAC1.lsnr` on member `mvrac1`
Stop of `ora.mvrac1.LISTENER_MVRAC1.lsnr` on member `mvrac1` succeeded.

Aí faço o relocate do VIP:

[root@mvrac1 ~]#  crs_relocate ora.mvrac1.vip
Attempting to stop `ora.mvrac1.vip` on member `mvrac1`
Stop of `ora.mvrac1.vip` on member `mvrac1` succeeded.
Attempting to start `ora.mvrac1.vip` on member `mvrac2`
Start of `ora.mvrac1.vip` on member `mvrac2` succeeded.

O relocate geralmente é utilizado quando um recurso (VIP) não foi inicializado no seu nó (por um problema de placa de rede, por exemplo).

Este artigo foi bem simples. No próximo, veremos sobre as ferramentas de gerenciamento do OCR.

Um abraço!

Vinicius

* Corrigido erro de digitação. Obrigado LRezende!