Olá pessoal!

Depois de um longo tempo sem atualizar o blog, voltamos hoje com o início da série de artigos que tratará sobre as rotinas administrativas do Clusterware.

Esse primeiro artigo tratará sobre o start e stop do Clusterware.

Não explicarei em detalhes sobre os binários que utilizaremos para parar os recursos do cluster, pois isso será tratado nos artigos subsequentes. O objetivo deste artigo é deixar você preparado para inicializar e interromper os recursos individualmente ou globalmente.

Vamos lá?

Começaremos com a interrupção de todos os recursos do cluster num nó específico. Para isso, é necessário utilizar o binário crsctl que está em $ORA_CRS_HOME, a execução deste binário deve ser feita através do usuário root.

O atual status dos componentes do cluster é:

[oracle@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

Podemos observar que todos os recursos do cluster estão ONLINE. Tanto no nó mvrac1 quanto no mvrac2.

Vamos supor que a equipe de infra-estrutura precisa realizar a atualização de um firmware de uma placa do servidor. Ou trocar um processador, ou aumentar memória, enfim, qualquer atividade que exija a interrupção do servidor.

Como utilizamos o Oracle RAC, o ambiente de Banco de Dados não ficará indisponível pois temos dois servidores que executam o banco de dados, desta forma, podemos interromper tranquilamente o servidor que passará pela manutenção, com a garantia que o ambiente de banco de dados continuará disponível aos usuários.

O servidor que passará pela manutenção é o mvrac1. Desta forma, com o usuário root, executaremos o binário crsctl da seguinte forma:

[root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl stop crs
Stopping resources. This could take several minutes.
Successfully stopped CRS resources.
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.

Vejam que a sintaxe é: crsctl stop crs.

Eu estou solicitando através do crsctl interromper todo o crs (cluster), mas o binário crsctl quando utilizado com as palavras-chave start ou stop, tratará apenas do nó onde é executado, ou seja, interromperá todos os recursos no nó onde o “crsctl stop crs” foi executado, neste caso, o nó mvrac1.

Vamos agora no servidor mvrac2 verificar o status dos recursos do cluster após a interrupção dos recursos no nó mvrac1.

[oracle@mvrac2 crsd]$ crsstat
HA Resource                                        Target     State
-----------                                        ------     -----
ora.mvdb.db                                        ONLINE     ONLINE on mvrac2
ora.mvdb.mvdb1.inst                                ONLINE     OFFLINE
ora.mvdb.mvdb2.inst                                ONLINE     ONLINE on mvrac2
ora.mvdb.producao.cs                               ONLINE     ONLINE on mvrac2
ora.mvdb.producao.mvdb1.srv                        ONLINE     OFFLINE
ora.mvdb.producao.mvdb2.srv                        ONLINE     ONLINE on mvrac2
ora.mvrac1.ASM1.asm                                ONLINE     OFFLINE
ora.mvrac1.LISTENER_MVRAC1.lsnr                    ONLINE     OFFLINE
ora.mvrac1.gsd                                     ONLINE     OFFLINE
ora.mvrac1.ons                                     ONLINE     OFFLINE
ora.mvrac1.vip                                     ONLINE     ONLINE on mvrac2
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

Observem que o recurso ora.mvrac1.vip que é o recurso que controla o VIP (IP Virtual) do nó mvrac1 está agora online no servidor mvrac2. Esse é o comportamento padrão do Clusterware. Quando os recursos são interrompidos através do crsctl, o IP virtual é remanejado para outro servidor que estiver ativo no cluster.

Os recursos são interrompidos na seguinte ordem:

1) Serviços de BD;

2) BD;

3) ASM;

4) Nodeapps (Listener, GSD, ONS e VIP).

Muito bem, para inicializar os recursos do cluster no nó mvrac1, basta utilizar o crsctl com a palavra-chave start, com o usuário root:

[root@mvrac1 ~]# /u01/app/oracle/product/10.2.0/crs/bin/crsctl start crs
Attempting to start CRS stack
The CRS stack will be started shortly

Após isso, vamos verificar o status dos recursos do cluster:

[oracle@mvrac1 ~]$ crsstat
HA Resource                                        Target     State
-----------                                        ------     -----
ora.mvdb.db                                        ONLINE     ONLINE on mvrac2
ora.mvdb.mvdb1.inst                                ONLINE     ONLINE on mvrac1
ora.mvdb.mvdb2.inst                                ONLINE     ONLINE on mvrac2
ora.mvdb.producao.cs                               ONLINE     ONLINE on mvrac2
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

Os recursos são inicializados na seguinte ordem:

1) Nodeapps (Listener, GSD, ONS e VIP);

2) ASM;

3) BD;

4) Serviços de BD.

Agora que já sabemos inicializar/interromper todos os recursos do cluster num nó, vamos ver como interrompemos serviços específicos do cluster num nó, ou então em todo o cluster.

Vamos supor que eu precise alterar um parâmetro somente numa instância, como por exemplo, a quantidade definida para a SGA. A instância que terá o parâmetro alterado é a instância mvdb1, que está em execução no servidor mvrac1:

SQL> alter system set sga_max_size=175m scope=spfile sid='mvdb1';

System altered.

SQL> alter system set sga_target=175m scope=spfile sid='mvdb1';

System altered.

Após alterar o parâmetro, é necessário reiniciar a instância.

Agora utilizaremos o binário srvctl, neste momento, verificaremos apenas as funções de start/stop deste binário. Ele é utilizado para interromper recursos específicos, em todo o cluster ou apenas em nós específicos.

  • Instância de BD:

Para interromper a instância mvdb1, basta executar o seguinte:

[oracle@mvrac1 ~]$ srvctl stop instance -d mvdb -i mvdb1

A sintaxe é: srvctl stop instance -d <DBNAME> -i <INSTANCE_NAME> -o <OPTION_SHUTDOWN>

Exemplos:

srvctl stop instance -d mvdb -i mvdb1 -o abort
srvctl stop instance -d mvdb -i mvdb1 -o transactional

A opção default para o shutdown é a IMMEDIATE.

Para fazer o start o srvctl segue a mesma lógica:

[oracle@mvrac1 ~]$ srvctl start instance -d mvdb -i mvdb1

A sintaxe é: srvctl start instance -d <DBNAME> -i <INSTANCE_NAME> -o <OPTION_STARTUP>

Exemplos:

srvctl start instance -d mvdb -i mvdb1 -o nomount
srvctl start instance -d mvdb -i mvdb1 -o mount

A opção default para o shutdown é a OPEN.

  • Banco de Dados

Assim como baixamos apenas uma instância, podemos também realizar o stop/start de todo o banco de dados, ou seja, todas as instâncias associadas a este banco de dados:

[oracle@mvrac1 ~]$ srvctl stop database -d mvdb

Sua sintaxe é: srvctl stop database -d <DBNAME> -o <OPTION_SHUTDOWN>

Exemplos:

srvctl stop database -d mvdb -o abort
srvctl stop database -d mvdb -o transactional

A opção default para o shutdown é a IMMEDIATE.

Para fazer o startup do banco de dados:

[oracle@mvrac1 ~]$ srvctl start database -d mvdb

Sua sintaxe é: srvctl start database -d <DBNAME> -o <OPTION_STARTUP>

Exemplos:

srvctl start database -d mvdb -o nomount
srvctl start database -d mvdb -o mount

A opção default para o shutdown é a OPEN.

  • ASM

Para interromper o ASM:

[oracle@mvrac1 ~]$ srvctl stop asm -n mvrac1

A sintaxe deste comando é: srvctl stop asm -n <NODENAME>.

Como só há APENAS uma instância ASM por nó, é necessário especificar o nó quando a instância ASM for interrompida.

Para inicializar o ASM:

[oracle@mvrac1 ~]$ srvctl start asm -n mvrac1

A sintaxe deste comando é: srvctl start asm -n <NODENAME>.

Como só há APENAS uma instância ASM por nó, é necessário especificar o nó quando a instância ASM for inicializada.

  • Nodeapps

Para interromper os nodeapps:

[oracle@mvrac1 ~]$ srvctl stop nodeapps -n mvrac1

A sintaxe deste comando é: srvctl stop nodeapps -n <NODENAME> .

Para inicializar os nodeapps:

[oracle@mvrac1 ~]$ srvctl start nodeapps -n mvrac1

A sintaxe deste comando é: srvctl start nodeapps -n <NODENAME>.

  • Listener

Mesmo o Listener fazendo parte dos nodeapps, também é possível pará-lo individualmente com o srvctl.

Para interromper o Listener:

[oracle@mvrac1 ~]$ srvctl stop listener -n mvrac1

A sintaxe deste comando é: srvctl stop listener -n <NODENAME>.

Para inicializar o Listener:

[oracle@mvrac1 ~]$ srvctl start listener -n mvrac1

A sintaxe deste comando é: srvctl start listener -n <NODENAME>.

Bom, por hoje é só. No próximo artigo discutiremos com mais detalhes a utilização do crsctl (pois este não serve somente para interromper e inicializar os recursos do cluster).

Espero que este artigo seja útil.

Caso alguém tenha alguma dúvida, entre em contato através do comentário neste artigo ou então mande um e-mail para blog@viniciusdba.com.br.

Um abraço!

Vinicius