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
Related posts
6 Comments
Deixe um comentário Cancelar resposta
Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.
Disclaimer
Minhas postagens refletem minhas próprias opiniões e não representam necessariamente as opiniões do meu empregador, a Accenture.
Grande Viny, bem é meio que chover no molhado isso que vou dizer, mas, este POST ficou fantastico, didática impecável, facil entendimento, excelente explanação do assunto e o principal “conhecimento compartilhado”, gostei muito mesmo, e por ter feito já o curso Oficial da Oracle em 2008 digo á você que NÃO DEVE EM NADA qo que é apresentado em sala de aula, alias aqui as minucias foram muito melhor explicadas.
Parabéns Brother!!!..
Sucesso Sempre!!!!
Fala David!
Mais uma vez, obrigado pela visita e principalmente pelas palavras!!!
Fico contente de saber que a didática está legal e que isso pode ajudar as pessoas de alguma forma!
Valeu!!
Abraço!
Está bem completo agora todo o material sobre RAC.
Tenho recomendado pra muita gente este site.
Parabéns pela iniativa como um todo.
Abraço
Fala Alexander!
Obrigado pelas palavras!!
Valeu!!
Abraço!
Vinicius: Primeiramente, parabéns! E muito obrigado por compartilhar conhecimento.
Quase 10 anos depois esse post ajudando alguém que está começando já no 12c.
Na parte de iniciar o banco de dados em que você diz “A opção default para o shutdown é a OPEN.” não seria “A opção default para o startup é a OPEN.” ?
Sim, Maicon! Você está certo!
Vou corrigir! Muito obrigado!