Tag Archive: rotinas administrativas

Olá pessoal!

Hoje veremos como realizar corretamente a análise para o troubleshooting do ambiente clusterizado.

Na verdade, não passarei aqui como se fazer um troubleshooting, mas, sim, como conhecer a ordem de inicialização do Clusterware, e, com isso, identificar o lugar onde o problema ocorre.

O Clusterware, é iniciado no boot do sistema operacional, pois é chamado através do /etc/inittab;

Entradas no /etc/inittab referentes ao startup do Clusterware:

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

Assim que o servidor é iniciado, o primeiro processo que tentará ficar online é o CSS, para isso, verificará se tem acesso de leitura/gravação nos Voting Disks;

Para acompanhar a subida do CSS, verificar dois logs:

  • Arquivo: /var/log/messages

As mensagens esperadas são:

    • Cluster Ready Services completed waiting on dependencies;
    • Running CRSD with TZ=;
    • Oracle CSS Family monitor starting.
  • Arquivo: $ORA_CRS_HOME/log/<hostname>/alert.log

A mensagem esperada é:

    • CSSD voting file is online: /dev/voting1

O arquivo /etc/oracle/ocr.loc define a localização do OCR. Necessário para que o processo CRSD seja iniciado. O CSS faz a leitura desse arquivo;

O CSS solicita o início do CRSD e EVMD ($ORA_CRS_HOME/log/hostname/alert.log.

As mensagens esperadas para esta ação são:

  • The OCR service started on node mvrac1;
  • EVMD started on node mvrac1;
  • CRSD started on node mvrac1;

O CRSD inicializará os recursos do cluster ($ORA_CRS_HOME/log/<hostname>/crsd/crsd.log).

As mensagens esperadas são:

  • “Attempting to start ‘ora.mvrac1.vip’ on member ‘mvrac1′”;
  • “Start of ‘ora.mvrac1.vip’ on member ‘mvrac1’ succeeded.”

Diretórios onde são gerados os logs do Clusterware:

  • $ORA_CRS_HOME/log/<hostname>

Para o restante dos recursos, o caminho de log permanece o mesmo:

Listener:

  • $ORACLE_HOME/network/log/listener.log

ASM:

  • Definido pelo parâmetro BACKGROUND_DUMP_DEST da instância ASM;

Banco de Dados:

  • Definido pelo parâmetro BACKGROUND_DUMP_DEST da instância de banco de dados.

Conhecendo todo o ciclo de inicialização do Clusterware, e onde procurar erros, fica fácil encontrar o problema, ou, ao menos, direcionar o problema para o Suporte Oracle.

Finalizamos hoje a série de artigos das rotinas administrativas do Clusterware.

O próximo artigo iniciará a série que tratará sobre a conversão de um banco de dados single instance para RAC.

Um abraço!

Vinicius







----------------------------------------------------------------------------

Copyright:

Este site e todo o conteúdo aqui publicado pertence ao Blog ViniciusDBA.com.br e possui seus respectivos direitos autorais.

O Conteúdo desde Blog não deve ser publicado, distribuído ou transmitido sem autorização prévia de seu autor.

Oracle e seus produtos são marcas registradas da Oracle Corporation® (http://www.oracle.com) Todo o material aqui encontrado é mantido sem ajuda financeira e mantém como propriedade de seu fundador/escritor.

Disclaimer:
The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.
As opiniões publicadas neste blog (http://www.viniciusdba.com.br) são pessoais e não necessariamente representam a visão da Oracle.


Toda informação aqui encontrado é oferecida através do uso do bom senso e boa fé do seus leitores e não deve ser considerada como material oficial da Oracle Corporation (http://www.oracle.com).

O Autor (e contribuidores) não considera as informações aqui como oficiais e/ou permitidas para redistribuição. Ao utilizar o site http://www.viniciusdba.com.br o leitor deve entender e aceitar que as informações aqui encontradas são de direitos autorais do Autor e contribuidores.

O blog http://www.viniciusdba.com.br não faz revisão de conteúdo publicado por outros como comentários bem como posts em grupo de usuários ou portais.

Seus autores não necessariamente concordam ou apoiam opiniões de seus leitores.

ESTE É UM SITE INDEPENDENTE E NÃO REPRESENTA A ORACLE CORPORATION® (http://www.oracle.com) EM NENHUM SENTIDO. AS OPINIÕES E CONTEÚDOS AQUI ENCONTRADOS NÃO POSSUEM RELAÇÃO COM A VISÃO DA ORACLE CORPORATION®. ESTE SITE NÃO POSSUI NENHUM APOIO OU PATROCINIO DA ORACLE CORPORATION®.

Olá pessoal!

Hoje veremos mais detalhes sobre a ferramenta oifcfg.

Ela é utilizada para definir quais serão as interfaces de rede pública e privada no Clusterware. Além disso, ela é utilizada quando é necessário alterar a faixa de endereço IP e subnet de uma rede específica (necessário quando há mudança na faixa de IP’s utilizada pela corporação).

Características do oifcfg:

  • Pode ser utilizado com o usuário oracle;
  • A partir de qualquer nó, controla todos;
  • Ferramenta para administração das interfaces de rede utilizadas no Clusterware:
    • Pública (VIP);
    • Privada (InterConnect).
  • Caso uma interface de rede queime, essa ferramenta será utilizada para substituir a interface de rede no OCR;
  • Útil para alterar a Subnet de uma interface de rede.

Como citado, as alterações efetuadas através do oifcfg são armazenadas no OCR.

Para verificar quais são as interfaces de rede e seu devido uso no Clusterware:

[oracle@mvrac1 oracle]$ oifcfg getif
eth0  172.23.10.0  global  public
eth1  10.0.0.0  global  cluster_interconnect

Para reconfigurar uma placa de rede para outra faixa de IP, primeiro, é necessário excluir as configurações desta placa:

[oracle@mvrac1 oracle]$ oifcfg delif -global eth0

A opção -global significa que esta configuração deverá ser válida para todos os nós, ou seja, a placa eth0 deverá ser excluída da configuração do Clusterware em todos os nós. Esta opção é utilizada pois também pode ser feita a configuração de uma interface de rede em apenas um nó, com a opção…

Vamos supor que ambas as interfaces serão excluídas pois outras serão configuradas. Vamos agora excluir a configuração da placa eth1:

[oracle@mvrac1 oracle]$ oifcfg delif -global eth1

Agora devemos configurar as placas desejadas:

[oracle@mvrac1 oracle]$ oifcfg setif -global eth3/192.168.111.0:public
[oracle@mvrac1 oracle]$ oifcfg setif -global eth4/10.0.0.0:cluster_interconnect

Lembrando que para alterar o endereço de InterConnect também é necessário alterar a informação no arquivo /etc/hosts e no arquivo de configuração da placa de rede em /etc/sysconfig/network-scripts/ifcfg-ethX.

Para o VIP, além disso, também é necessário alterar o endereço IP no OCR através do srvctl, conforme citado no post Oracle Clusterware – Rotinas Administrativas – Parte 3 – srvctl.

Um abraço!

Vinicius







----------------------------------------------------------------------------

Copyright:

Este site e todo o conteúdo aqui publicado pertence ao Blog ViniciusDBA.com.br e possui seus respectivos direitos autorais.

O Conteúdo desde Blog não deve ser publicado, distribuído ou transmitido sem autorização prévia de seu autor.

Oracle e seus produtos são marcas registradas da Oracle Corporation® (http://www.oracle.com) Todo o material aqui encontrado é mantido sem ajuda financeira e mantém como propriedade de seu fundador/escritor.

Disclaimer:
The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.
As opiniões publicadas neste blog (http://www.viniciusdba.com.br) são pessoais e não necessariamente representam a visão da Oracle.


Toda informação aqui encontrado é oferecida através do uso do bom senso e boa fé do seus leitores e não deve ser considerada como material oficial da Oracle Corporation (http://www.oracle.com).

O Autor (e contribuidores) não considera as informações aqui como oficiais e/ou permitidas para redistribuição. Ao utilizar o site http://www.viniciusdba.com.br o leitor deve entender e aceitar que as informações aqui encontradas são de direitos autorais do Autor e contribuidores.

O blog http://www.viniciusdba.com.br não faz revisão de conteúdo publicado por outros como comentários bem como posts em grupo de usuários ou portais.

Seus autores não necessariamente concordam ou apoiam opiniões de seus leitores.

ESTE É UM SITE INDEPENDENTE E NÃO REPRESENTA A ORACLE CORPORATION® (http://www.oracle.com) EM NENHUM SENTIDO. AS OPINIÕES E CONTEÚDOS AQUI ENCONTRADOS NÃO POSSUEM RELAÇÃO COM A VISÃO DA ORACLE CORPORATION®. ESTE SITE NÃO POSSUI NENHUM APOIO OU PATROCINIO DA ORACLE CORPORATION®.

Olá pessoal!

Hoje veremos sobre as ferramentas de gerenciamento do OCR.

Características do ocrcheck:

  • Pode ser executado com o usuário root ou oracle;
  • Exibe informações a respeito do OCR (tamanho, versão, status, localização;
  • Um log é gerado em $ORA_CRS_HOME/log/<hostname>/client/ocrcheck_<pid>.log

Exemplo de uso, ocrcheck:

[root@mvrac1 oracle]# ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          2
         Total space (kbytes)     :     256788
         Used space (kbytes)      :       4624
         Available space (kbytes) :     252164
         ID                       :  382969207
         Device/File Name         :  /dev/ocr1
                                    Device/File integrity check succeeded
         Device/File Name         :  /dev/ocr2
                                    Device/File integrity check succeeded

         Cluster registry integrity check succeeded

Como podem observar, o ocrcheck é utilizado para verificar a integridade do OCR.

Conteúdo do log gerado:

Oracle Database 10g CRS Release 10.2.0.4.0 Production Copyright 1996, 2008 Oracle.  All rights reserved.
2010-08-16 10:36:03.160: [OCRCHECK][6617296]ocrcheck starts...
2010-08-16 10:36:21.884: [OCRCHECK][6617296]protchcheck: OCR status : total = [256788], used = [4624], avail = [252164]

O ocrcheck pode ser utilizado caso haja algum problema no Clusterware para verificar a integridade do OCR.

Características do ocrdump:

  • Faz o dump do OCR;
  • Deve ser utilizado com o usuário root;
  • Usado para consultar sobre os registros do OCR em caso de perda e necessidade de novo registro (este, manual);
  • Suporte Oracle pode solicitar para tratar algum problema do Clusterware.

Exemplo de uso, ocrdump:

[root@mvrac1 oracle]# ocrdump /root/ocrdump.txt

Início do arquivo texto gerado:

08/17/2010 20:40:15
/u01/app/oracle/product/10.2.0/crs/bin/ocrdump.bin /root/ocrdump.txt

[SYSTEM]
UNDEF :
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_READ, USER_NAME : roo
t, GROUP_NAME : root}

[SYSTEM.css]
UNDEF :
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_READ, USER_NAME : roo
t, GROUP_NAME : root}

[SYSTEM.css.interfaces]
UNDEF :
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_CREATE_SUB_KEY, OTHER_PERMISSION : PROCR_READ, USER_
NAME : oracle, GROUP_NAME : oinstall}

[SYSTEM.css.interfaces.global]
UNDEF :
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_ALL_ACCESS, OTHER_PERMISSION : PROCR_READ, USER_NAME
 : oracle, GROUP_NAME : oinstall}

Mais um trecho do arquivo gerado:

[DATABASE.DATABASES.mvdb.SPFILE]
ORATEXT : +DG_DADOS/mvdb/spfilemvdb.ora
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_WRITE, OTHER_PERMISSION : PROCR_READ, USER_NAME : oracle, GROUP_NAME : dba}

Características do ocrconfig:

  • Ferramenta de configuração do OCR;
  • Deve ser utilizado com o usuário root;
  • Permite realizar backup lógico do OCR (-export -s online);
  • Permite importar o backup lógico;
  • Permite fazer upgrade/downgrade do OCR;
  • Exibe qual é o diretório de backup automático do OCR e os últimos backups automáticos (-showbackup);
  • Altera o local de backup automático (-backuploc );
  • Substitui o local do OCR (-replace ocr | ocrmirror );
  • Sobrescreve a configuração do OCR (-overwrite);
  • Repara o OCR (-repair ocr | ocrmirror );
  • Um log é gerado em $ORA_CRS_HOME/log/<hostname>/client/ocrconfig_<pid>.log

O Clusterware gera um backup automático do OCR a cada 4 horas, conforme citado no post Oracle Clusterware – Arquitetura – Parte 2 – Principais Arquivos: Voting Disk e OCR.

Vamos exibir os backups automáticos:

[root@mvrac1 ~]# ocrconfig -showbackup

mvrac2     2010/08/16 08:16:47     /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv

mvrac2     2010/08/16 02:53:24     /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv

mvrac1     2010/08/11 23:11:57     /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv

mvrac2     2010/08/16 02:53:24     /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv

mvrac1     2010/08/08 02:24:35     /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv

Como pudemos observar, os últimos backups estão no nó MVRAC2.

Verificando os arquivos de backup existentes no diretório:

[root@mvrac2 ~]# ls -ltr /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv
total 28536
-rw-r--r-- 1 root root 4837376 Apr 26 00:19 week.ocr
-rw-r--r-- 1 root root 4861952 Jul 15 03:53 backup02.ocr
-rw-r--r-- 1 root root 4861952 Aug 16 02:53 backup01.ocr
-rw-r--r-- 1 root root 4861952 Aug 16 02:53 day.ocr
-rw-r--r-- 1 root root 4861952 Aug 16 08:16 week_.ocr
-rw-r--r-- 1 root root 4861952 Aug 16 08:16 backup00.ocr

Os backups estão ali.

Vamos fazer uma brincadeira?

Vamos corromper 1 OCR (como root):

[root@mvrac1 ~]# dd if=/dev/zero of=/dev/ocr1
dd: writing to `/dev/ocr1': No space left on device
514018+0 records in
514017+0 records out
263176704 bytes (263 MB) copied, 8.42927 seconds, 31.2 MB/s

Vamos agora verificar a integridade do OCR com o ocrcheck:

[root@mvrac1 ~]# ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          2
         Total space (kbytes)     :     256788
         Used space (kbytes)      :       4624
         Available space (kbytes) :     252164
         ID                       :  382969207
         Device/File Name         :  /dev/ocr1
                                    Device/File needs to be synchronized with the other device
         Device/File Name         :  /dev/ocr2
                                    Device/File integrity check succeeded

         Cluster registry integrity check succeeded

O device /dev/ocr1 não está mais íntegro.

Bom, vamos agora corromper o outro OCR:

[root@mvrac1 ~]# dd if=/dev/zero of=/dev/ocr2
dd: writing to `/dev/ocr1': No space left on device
514018+0 records in
514017+0 records out
263176704 bytes (263 MB) copied, 8.42927 seconds, 31.2 MB/s

Verificando novamente a integridade do OCR:

[root@mvrac1 ~]# ocrcheck
Segmentation fault

Verificando o status dos componentes do cluster:

[root@mvrac1 ~]# crsstat
HA Resource                                        Target     State
-----------                                        ------     -----
error connecting to CRSD at [(ADDRESS=(PROTOCOL=ipc)(KEY=ora_crsqs))] clsccon 184

Verificando o log $ORA_CRS_HOME/log/mvrac1/alertmvrac1.log:

2010-08-17 20:45:22.046
[client(9701)]CRS-1006:The OCR location /dev/ocr2 is inaccessible. Details in /u01/app/oracle/product/10.2.0/crs/log/mvrac1/client/ocrcheck_9701.log.
2010-08-17 20:45:22.037
[crsd(4403)]CRS-1006:The OCR location /dev/ocr2 is inaccessible. Details in /u01/app/oracle/product/10.2.0/crs/log/mvrac1/crsd/crsd.log.

Trecho do log $ORA_CRS_HOME/mvrac1/crsd/crsd.log:

2010-08-17 20:45:24.233: [  OCRRAW][3055160208]proprdc: backend_ctx->metactx=[0x932bbc8]
2010-08-17 20:45:24.233: [  OCRRAW][3055160208]proprdc: backend_ctx->prop_sctx=[0x9327600]
2010-08-17 20:45:24.233: [  OCRRAW][3055160208]proprdc: backend_ctx->prop_sltsmx=[0x0]
2010-08-17 20:45:24.234: [  OCRRAW][3055160208]proprdc: backend_ctx->prop_sclsctx=[0x9350004]
2010-08-17 20:45:24.234: [  OCRRAW][3055160208]proprdc: backend_ctx->prop_ctx_ocrctx=[0x9357f24]
[  OCRAPI][3055160208]procr_ctx_set_invalid_no_abort: ctx set to invalid
[  OCRAPI][3055160208]procr_ctx_set_invalid: aborting...

Fazendo o restore do OCR:

[root@mvrac2 oracle]# ocrconfig -restore /u01/app/oracle/product/10.2.0/crs/cdata/crs_mv/backup00.ocr

Verificando a integridade do OCR:

[root@mvrac2 oracle]# ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          2
         Total space (kbytes)     :     256788
         Used space (kbytes)      :       4624
         Available space (kbytes) :     252164
         ID                       :  382969207
         Device/File Name         :  /dev/ocr1
                                    Device/File integrity check succeeded
         Device/File Name         :  /dev/ocr2
                                    Device/File integrity check succeeded

         Cluster registry integrity check succeeded

Verificando o status dos recursos do Clusterware:

[root@mvrac1 crsd]# 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

Como puderam ver, desde que tenhamos os arquivos de backup do OCR disponíveis, é fácil recuperar o ambiente de Clusterware após um desastre.

No próximo, continuaremos com as rotinas administrativas do Clusterware.

Um abraço!

Vinicius







----------------------------------------------------------------------------

Copyright:

Este site e todo o conteúdo aqui publicado pertence ao Blog ViniciusDBA.com.br e possui seus respectivos direitos autorais.

O Conteúdo desde Blog não deve ser publicado, distribuído ou transmitido sem autorização prévia de seu autor.

Oracle e seus produtos são marcas registradas da Oracle Corporation® (http://www.oracle.com) Todo o material aqui encontrado é mantido sem ajuda financeira e mantém como propriedade de seu fundador/escritor.

Disclaimer:
The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.
As opiniões publicadas neste blog (http://www.viniciusdba.com.br) são pessoais e não necessariamente representam a visão da Oracle.


Toda informação aqui encontrado é oferecida através do uso do bom senso e boa fé do seus leitores e não deve ser considerada como material oficial da Oracle Corporation (http://www.oracle.com).

O Autor (e contribuidores) não considera as informações aqui como oficiais e/ou permitidas para redistribuição. Ao utilizar o site http://www.viniciusdba.com.br o leitor deve entender e aceitar que as informações aqui encontradas são de direitos autorais do Autor e contribuidores.

O blog http://www.viniciusdba.com.br não faz revisão de conteúdo publicado por outros como comentários bem como posts em grupo de usuários ou portais.

Seus autores não necessariamente concordam ou apoiam opiniões de seus leitores.

ESTE É UM SITE INDEPENDENTE E NÃO REPRESENTA A ORACLE CORPORATION® (http://www.oracle.com) EM NENHUM SENTIDO. AS OPINIÕES E CONTEÚDOS AQUI ENCONTRADOS NÃO POSSUEM RELAÇÃO COM A VISÃO DA ORACLE CORPORATION®. ESTE SITE NÃO POSSUI NENHUM APOIO OU PATROCINIO DA ORACLE CORPORATION®.

Olá pessoal!

Bom, depois das comemorações devido à nomeação a Oracle ACE, voltaremos ao trabalho!

Continuaremos com a série de artigos/posts que trata sobre as rotinas administrativas do Clusterware.

Hoje veremos mais detalhes a respeito do crs_stat.

Essa ferramenta é utilizada para visualizar o status dos componentes registrados no Clusterware.

Características do crs_stat:

  • Pode ser executado a partir de qualquer nó;
  • Deve ser executado com o usuário oracle;
  • Controla todos os nós;
  • Visualiza o status dos componentes registrados no Clusterware.

Alguns exemplos de uso:

Sintaxe mais utilizada:

[oracle@mvrac1 ~]$ crs_stat -t

A saída do comando será:

Name           Type           Target    State     Host
------------------------------------------------------------
ora.mvdb.db    application    ONLINE    ONLINE    mvrac1
ora....b1.inst application    ONLINE    ONLINE    mvrac1
ora....b2.inst application    ONLINE    ONLINE    mvrac2
ora....ucao.cs application    ONLINE    ONLINE    mvrac1
ora....db1.srv application    ONLINE    ONLINE    mvrac1
ora....db2.srv application    ONLINE    ONLINE    mvrac2
ora....SM1.asm application    ONLINE    ONLINE    mvrac1
ora....C1.lsnr application    ONLINE    ONLINE    mvrac1
ora.mvrac1.gsd application    ONLINE    ONLINE    mvrac1
ora.mvrac1.ons application    ONLINE    ONLINE    mvrac1
ora.mvrac1.vip application    ONLINE    ONLINE    mvrac1
ora....SM2.asm application    ONLINE    ONLINE    mvrac2
ora....C2.lsnr application    ONLINE    ONLINE    mvrac2
ora.mvrac2.gsd application    ONLINE    ONLINE    mvrac2
ora.mvrac2.ons application    ONLINE    ONLINE    mvrac2
ora.mvrac2.vip application    ONLINE    ONLINE    mvrac2

Observem que para alguns dos recursos registrados no Clusterware, o nome é “quebrado” para facilitar a visualização. No entanto, isso não facilita o gerenciamento dos recursos, já que fica mais complicado identificar os recursos.

Para entender a saída do comando:

A primeira coluna exibe o nome do recurso.

A segunda coluna exibe o tipo de recurso no Clusterware. Todos os recursos exibidos são do tipo application.

A coluna TARGET indica qual é o status esperado do recurso.

A coluna STATE indica o status atual do recurso.

A coluna HOST indica em qual host o recurso está em execução.

Outra forma de utilizar o crs_stat é da seguinte forma:

[oracle@mvrac1 ~]$ crs_stat

A saída do comando será:

NAME=ora.mvdb.db
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac1

NAME=ora.mvdb.mvdb1.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac1

NAME=ora.mvdb.mvdb2.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac2

NAME=ora.mvdb.producao.cs
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac1

NAME=ora.mvdb.producao.mvdb1.srv
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac1

NAME=ora.mvdb.producao.mvdb2.srv
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac2

NAME=ora.mvrac1.ASM1.asm
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac1

NAME=ora.mvrac1.LISTENER_MVRAC1.lsnr
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac1

NAME=ora.mvrac1.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac1

NAME=ora.mvrac1.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac1

NAME=ora.mvrac1.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac1

NAME=ora.mvrac2.ASM2.asm
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac2

NAME=ora.mvrac2.LISTENER_MVRAC2.lsnr
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac2

NAME=ora.mvrac2.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac2

NAME=ora.mvrac2.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac2

NAME=ora.mvrac2.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE on mvrac2

Observem que mesmo exibindo o status de todos os componentes sem quebras de texto, para um cluster com muitos recursos registrados se torna inviável utilizar o comando desta forma, pois também não fica fácil gerenciar os componentes desta forma.

Para solucionar isso, um bom conhecimento em shell scripting resolve. Ou então, podemos utilizar alguma solução já criada por alguém.

Este é o caso! 🙂

Existe um guru em Oracle RAC chamado Jeffrey Hunter. Ele desenvolveu um script que facilita a leitura do status dos componentes do clusterware.

O script pode ser baixado diretamente do site dele: http://www.idevelopment.info/data/Oracle/DBA_scripts/UNIX_Shell_Scripts/rac_crs_stat

O script está reproduzido abaixo:

#!/bin/ksh

# +----------------------------------------------------------------------------+
# |                          Jeffrey M. Hunter                                 |
# |                      jhunter@idevelopment.info                             |
# |                         www.idevelopment.info                              |
# |----------------------------------------------------------------------------|
# |      Copyright (c) 1998-2009 Jeffrey M. Hunter. All rights reserved.       |
# |----------------------------------------------------------------------------|
# | DATABASE : Oracle                                                          |
# | FILE     : rac_crs_stat                                                    |
# | CLASS    : UNIX Shell Scripts                                              |
# | PURPOSE  : This KSH script will query all CRS resources using the crs_stat |
# |            script. The report will be a formatted version of the           |
# |            crs_stat -t command, but in tabular form with resource name     |
# |            and status. Filtering options are available by passing in a     |
# |            single string parameter to this script. This argument will be   |
# |            used to limit the output to HA resources whose names match      |
# |            that string.                                                    |
# | USAGE    : rac_crs_stat.ksh [RESOURCE_KEY]                                 |
# | NOTE     : This script requires the environment $ORA_CRS_HOME to be set to |
# |            your CRS installation.                                          |
# | NOTE     : As with any code, ensure to test this script in a development   |
# |            environment before attempting to run it in production.          |
# +----------------------------------------------------------------------------+

# +----------------------------------------------------------------------------+
# | GLOBAL VARIABLES                                                           |
# +----------------------------------------------------------------------------+

RSC_KEY=$1
QSTAT=-u
AWK=/usr/bin/awk

# +----------------------------------------------------------------------------+
# | TABLE HEADER                                                               |
# +----------------------------------------------------------------------------+

$AWK \
  'BEGIN {printf "%-50s %-10s %-18s\n", "HA Resource", "Target", "State";
          printf "%-50s %-10s %-18s\n", "-----------", "------", "-----";}'

# +----------------------------------------------------------------------------+
# | TABLE BODY                                                                 |
# +----------------------------------------------------------------------------+

$ORA_CRS_HOME/bin/crs_stat $QSTAT | $AWK \
 'BEGIN { FS="="; state = 0; }
  $1~/NAME/ && $2~/'$RSC_KEY'/ {appname = $2; state=1};
  state == 0 {next;}
  $1~/TARGET/ && state == 1 {apptarget = $2; state=2;}
  $1~/STATE/ && state == 2 {appstate = $2; state=3;}
  state == 3 {printf "%-50s %-10s %-18s\n", appname, apptarget, appstate; state=0;}'

Eu gosto de alterar o script incluindo uma variável de ambiente, que para o script, já deveria estar definida no sistema operacional. Alterar da seguinte forma:

De:

# +----------------------------------------------------------------------------+
# | TABLE BODY                                                                 |
# +----------------------------------------------------------------------------+

$ORA_CRS_HOME/bin/crs_stat $QSTAT | $AWK \

Para:

# +----------------------------------------------------------------------------+
# | TABLE BODY                                                                 |
# +----------------------------------------------------------------------------+

ORA_CRS_HOME=/u01/app/oracle/product/10.2.0/crs
$ORA_CRS_HOME/bin/crs_stat $QSTAT | $AWK \

Observem que incluí a linha onde defino a localização de ORA_CRS_HOME.

Eu costumo colocar esse script, com permissão de escrita (chmod +x) em /usr/local/bin, pois assim qualquer usuário do sistema operacional conseguirá visualizar o status dos componentes do clusterware.

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

Agora sim a saída está fácil de ser visualizada.

Uma outra forma de utilizar o crs_stat é da seguinte forma:

Visualizando o perfil (profile) do Listener do nó MVRAC1:

crs_stat -p

A saída do comando será:

NAME=ora.mvrac1.LISTENER_MVRAC1.lsnr
TYPE=application
ACTION_SCRIPT=/u01/app/oracle/product/10.2.0/db_1/bin/racgwrap
ACTIVE_PLACEMENT=0
AUTO_START=1
CHECK_INTERVAL=600
DESCRIPTION=CRS application for listener on node
FAILOVER_DELAY=0
FAILURE_INTERVAL=0
FAILURE_THRESHOLD=0
HOSTING_MEMBERS=mvrac1
OPTIONAL_RESOURCES=
PLACEMENT=restricted
REQUIRED_RESOURCES=ora.mvrac1.vip
RESTART_ATTEMPTS=5
SCRIPT_TIMEOUT=600
START_TIMEOUT=0
STOP_TIMEOUT=0
UPTIME_THRESHOLD=7d
USR_ORA_ALERT_NAME=
USR_ORA_CHECK_TIMEOUT=0
USR_ORA_CONNECT_STR=/ as sysdba
USR_ORA_DEBUG=0
USR_ORA_DISCONNECT=false
USR_ORA_FLAGS=
USR_ORA_IF=
USR_ORA_INST_NOT_SHUTDOWN=
USR_ORA_LANG=
USR_ORA_NETMASK=
USR_ORA_OPEN_MODE=
USR_ORA_OPI=false
USR_ORA_PFILE=
USR_ORA_PRECONNECT=none
USR_ORA_SRV=
USR_ORA_START_TIMEOUT=0
USR_ORA_STOP_MODE=immediate
USR_ORA_STOP_TIMEOUT=0
USR_ORA_VIP=

Alguns campos importantes:

ACTION_SCRIPT=/u01/app/oracle/product/10.2.0/db_1/bin/racgwrap

Todo recurso do clusterware tem um “action script”. O action script é o script que monitora o status e dispara o start/stop dos componentes do clusterware.

AUTO_START=1

AUTO_START indica se o recurso deve ser iniciado automaticamente pelo Clusterware.

Valores de referência:

  • AUTO_START=0: Se o recurso estava em execução antes do stop do Clusterware, ele será iniciado automaticamente. Se o recurso estava OFFLINE antes do stop do Clusterware, ele não será iniciado automaticamente. Resumindo, ele “conserva” o status do componentes antes do Stop do Clusterware;
  • AUTO_START=1: O Clusterware SEMPRE iniciará o recurso automaticamente;
  • AUTO_START=2: O Clusterware NUNCA iniciará o recurso automaticamente;
PLACEMENT=restricted

PLACEMENT significa que esse recurso só pode ser executado no nó mvrac1. Este recurso nunca poderá ser executado em outro nó. Apenas como exemplo, esse campo para um recurso VIP será exibido da seguinte forma:

PLACEMENT=favored

Isso indica que o recurso preferencialmente será executado no nó específico, mas que ele pode ser levado para outro nó quando o nó “principal” deste recurso estiver indisponível.

REQUIRED_RESOURCES=ora.mvrac1.vip

REQUIRED_RESOURCE indica quais são os recursos exigidos/necessários para que o recurso em questão possa ser executado. No caso do Listener num ambiente RAC, o VIP precisa estar online para que ele possa ser iniciado. Se o VIP estiver offline, o clusterware tentará inicializar o VIP antes do Listener.

RESTART_ATTEMPTS=5

Por default, quando um recurso estiver offline, o Clusterware tentará inicializar este recurso 5 vezes. Se as 5 tentativas falharem, o componente ficará no status OFFLINE e com a coluna TARGET em ONLINE.

Espero que este post de hoje tenha sido útil!

Voltaremos logo com a continuação desta série de artigos.

Um abraço!

Vinicius







----------------------------------------------------------------------------

Copyright:

Este site e todo o conteúdo aqui publicado pertence ao Blog ViniciusDBA.com.br e possui seus respectivos direitos autorais.

O Conteúdo desde Blog não deve ser publicado, distribuído ou transmitido sem autorização prévia de seu autor.

Oracle e seus produtos são marcas registradas da Oracle Corporation® (http://www.oracle.com) Todo o material aqui encontrado é mantido sem ajuda financeira e mantém como propriedade de seu fundador/escritor.

Disclaimer:
The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.
As opiniões publicadas neste blog (http://www.viniciusdba.com.br) são pessoais e não necessariamente representam a visão da Oracle.


Toda informação aqui encontrado é oferecida através do uso do bom senso e boa fé do seus leitores e não deve ser considerada como material oficial da Oracle Corporation (http://www.oracle.com).

O Autor (e contribuidores) não considera as informações aqui como oficiais e/ou permitidas para redistribuição. Ao utilizar o site http://www.viniciusdba.com.br o leitor deve entender e aceitar que as informações aqui encontradas são de direitos autorais do Autor e contribuidores.

O blog http://www.viniciusdba.com.br não faz revisão de conteúdo publicado por outros como comentários bem como posts em grupo de usuários ou portais.

Seus autores não necessariamente concordam ou apoiam opiniões de seus leitores.

ESTE É UM SITE INDEPENDENTE E NÃO REPRESENTA A ORACLE CORPORATION® (http://www.oracle.com) EM NENHUM SENTIDO. AS OPINIÕES E CONTEÚDOS AQUI ENCONTRADOS NÃO POSSUEM RELAÇÃO COM A VISÃO DA ORACLE CORPORATION®. ESTE SITE NÃO POSSUI NENHUM APOIO OU PATROCINIO DA ORACLE CORPORATION®.