Archive for April, 2010

Certificação

Olá pessoal, tudo bem?

Vocês devem ter observado que não houve atualização no blog essa semana. Pois é. Mas isso se deu por um bom motivo.

Estive estudando forte para a prova 1Z0-050: Oracle Database 11g: New Features for Administrators. Na verdade, estou estudando há mais de 6 meses o 11g, mas de 1 mês para cá, os estudos se intensificaram, já que eu estava entrando na reta final.

Bom, hoje fiz a prova, e consegui aprovação de 96%. Com isso, consegui atualizar a minha OCP para contemplar o 11g!

Semana que vem continuaremos com a atividade normal no blog.

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á amigos!

Hoje começaremos uma série de artigos onde discutiremos sobre a arquitetura do Oracle Clusterware.

No post de hoje, começaremos a falar dos daemons do Clusterware e de um processo no Linux que é fundamental para a utilização do Clusterware: hangcheck-timer.

Primeiramente, o que são daemons?

Basicamente, daemon é um programa de computador que é executado em background.

Geralmente eles respondem a requisições de rede, atividades de hardware, ou outros programas.

Comumente, o seu nome termina com a letra d, mas isso não é uma regra.

Referência: Wikipédia

Bom, vamos lá. No Oracle Clusterware, há basicamente 3 daemons, todos eles são iniciados com a opção de respawn, que significa que caso o processo termine abruptamente, o processo será reiniciado automaticamente.

O ambiente-base citado para exemplificar sobre os processos é o Red Hat Enterprise Linux.

  • CSSD (Cluster Syncronization Services Daemon)
    • Controla os membros do cluster;
    • Ele ajuda no monitoramento da “saúde dos nós, usando o Voting Disk e o InterConnect;
    • Também é responsável pela sincronização entre as instâncias de ASM e Banco de Dados;
    • É executado com o usuário oracle;
    • Considerado o principal processo no Cluster;
    • Como ele controla os membros do cluster, caso ele falhe abruptamente, o servidor em questão é reiniciado imediatemente.
  • CRSD (Cluster Ready Services Daemon)
    • Principal processo no gerenciamento de alta disponibilidade;
    • Realiza todas as operações de recuperação e gerenciamento da alta disponibilidade, como o gerenciamento do OCR e o gerenciamento dos recursos de aplicação (recursos do cluster);
    • Lê as configurações dos recursos que estão armazenadas no OCR;
    • Se um recurso falhar, tentará reiniciá-lo, até um limite definido pelo parâmetro RESTART_ATTEMPTS, o que geralmente é 5;
    • É executado com o usuário root;
    • Se o processo falhar, ele é automaticamente reiniciado (sem reinício do servidor).
  • EVMD (Event Manager Daemon)
    • Publica os eventos que o CRS cria (exemplo: instância up, instância down, listener up, listener down);
    • É executado com o usuário oracle;
    • Se o processo falhar, ele é automaticamente reiniciado (sem reinício do servidor).

Há também o seguinte daemon no Clusterware:

  • OPROCD (Process Monitor Daemon)
    • Monitora o cluster e fornece I/O fencing (quando um nó apresentar problemas, ele não poderá mais realizar operações de I/O);
    • O I/O fencing é garantido através do reinício imediato do servidor;
    • É executado com o usuário root (é um processo filho do CSSD);
    • Se o processo falhar, o servidor é reiniciado imediatamente;
    • No Linux, usa o hangcheck-timer para verificar a “saúde” do nó.

E também, há o módulo de kernel no Linux:

  • Hangcheck-Timer
    • Módulo do kernel que é lido no momento do boot;
    • Monitora o kernel do Linux em busca de operações longas que podem travar o sistema operacional e afetar a confiabilidade de um nó no RAC;
    • Usa o Time Stamp Counter (TSC) para obter delays previstos, ou então o travamento do nó;
    • O TSC é basicamente, um “ping” no kernel onde utiliza a CPU para fazer isso, portanto, é muito preciso. Caso ocorra delay nesse ping, significa que o nó está travando (hanging);
    • O hangcheck-timer, obviamente, usa um timer, onde se o valor do timer for ultrapassado, o servidor será reiniciado.
    • É usado em TODOS os clusters Oracle Clusterware no 10gR1, 10gR2 e 11gR1;
    • No 10gR2, tem como default, os seguintes parâmetros:
      • hangcheck_tick = 1: define com qual frequência, em segundos, o hangcheck-timer verificará por travamentos no nó;
      • hangcheck_margin = 10: define qual é a margem de erro tolerada, em segundos, antes do hangcheck_timer reiniciar o nó;
      • hangcheck_reboot = 1: define se o hangcheck_timer reiniciará o nó ou não. Se o valor estiver definido como 1, o nó será reiniciado caso esteja “travando”, se estiver diferente deste valor, o nó não será reiniciado.
    • O nó será reiniciado se o valor de hangcheck_tick + hangcheck_margin for atingido, isso é, no 10gR2, 11 segundos.

Bom pessoal, é isso, espero que esse post seja útil!

No próximo artigo, na próxima semana, veremos sobre os arquivos vitais para o funcionamento do Clusterware: OCR e Voting Disk.

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®.

Atualização Blog

Olá amigos!

Tudo bem?

Imagino que muitos devem ter passado por este blog já nesta quarta-feira e não viram artigo nenhum.

Pois é, vou realmente confessar que a última semana foi bastante atribulada e corrida, por isso tive tempo hábil para postar neste espaço durante a semana.

Eu havia citado no último post que eu iniciaria uma série de artigos sobre a administração do Clusterware e RAC. Pensei bem, e na verdade não falarei sobre isso ainda.

Antes de administrar algo, é preciso conhecer o objeto a ser administrado. Por isso, a partir da semana que vem,  iniciarei uma série de artigos que tratará sobre a arquitetura do Oracle Clusterware, e posteriormente, a arquitetura de um Banco de Dados Oracle RAC.

Após conhecermos a arquitetura desses componentes, estaremos aptos a partir para a série sobre a administração dos componentes citados.

É isso!

Me desculpem pelo “atraso”!

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®.

Série de artigos sobre Instalação do Oracle RAC:

Instalação do Oracle RAC 10g Release 2 – Parte 1: Pré-requisitos
Instalação do Oracle RAC 10g Release 2 – Parte 2: Criação da VM
Instalação do Oracle RAC 10g Release 2 – Parte 3: Instalação do Linux
Instalação do Oracle RAC 10g Release 2 – Parte 4: Configuração do Linux
Instalação do Oracle RAC 10g Release 2 – Parte 5: Clonagem da VM
Instalação do Oracle RAC 10g Release 2 – Parte 6: Pré-instalação do RAC
Instalação do Oracle RAC 10g Release 2 – Parte 7: Instalação do Oracle Clusterware
Instalação do Oracle RAC 10g Release 2 – Parte 8: Instalação do Patchset 10.2.0.4 no Clusterware
Instalação do Oracle RAC 10g Release 2 – Parte 9: Instalação do Oracle Database
Instalação do Oracle RAC 10g Release 2 – Parte 10: Instalação do Patchset 10.2.0.4 no Oracle Database
Instalação do Oracle RAC 10g Release 2 – Parte 11: Criação do Listener no Cluster
Instalação do Oracle RAC 10g Release 2 – Parte 12: Criação do ASM no Cluster
Instalação do Oracle RAC 10g Release 2 – Parte 13: Criação do Banco de Dados no Cluster
Instalação do Oracle RAC 10g Release 2 – Parte 14: Criação do Serviço para Load Balance e Failover

===================================

Olá pessoal, hoje chegamos ao último artigo sobre a série de Instalação do Oracle RAC 10g Release 2. É claro que na semana que vem, teremos um novo artigo, mas desta vez, começarei a abordar a administração do ambiente Oracle RAC. Portanto, essa série de 15 artigos se encerra aqui, e iniciaremos uma nova série de artigos.

Lembre-se, qualquer dúvida, poste seu comentário aqui, ou envie e-mail para blog@viniciusdba.com.br.

Para configurar o Enterprise Manager, precisamos ter alguns dados:

  • Nome global do banco de dados: mvdb;
  • Porta do Listener: 1521;
  • Nome do Cluster: crs_mv;
  • Senha do usuário SYS;
  • Senha do usuário DBSNMP;
  • Senha do usuário SYSMAN;
  • Endereço de e-mail para notificações (opcional);
  • Servidor SMTP para notificações (opcional);
  • Oracle Home do ASM;
  • Porta do ASM: 1521;
  • Role do ASM: SYSDBA;
  • Usuário do ASM: SYS;
  • Senha do usuário SYS do ASM.

Vamos fazer a configuração?

Com o usuário oracle no servidor mvrac1:

[oracle@mvrac1 ~]$ emca -config dbcontrol db -repos recreate -cluster

STARTED EMCA at Feb 25, 2010 2:22:59 AM
EM Configuration Assistant, Version 10.2.0.1.0 Production
Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Enter the following information:
Database unique name: mvdb
Listener port number: 1521
Cluster name: crs_mv
Password for SYS user:
Password for DBSNMP user:
Password for SYSMAN user:
Email address for notifications (optional):
Outgoing Mail (SMTP) server for notifications (optional):
ASM ORACLE_HOME [ /u01/app/oracle/product/10.2.0/db_1 ]:
ASM port [ 1521 ]:
ASM user role [ SYSDBA ]:
ASM username [ SYS ]:
ASM user password:
-----------------------------------------------------------------

You have specified the following settings

Database ORACLE_HOME ................ /u01/app/oracle/product/10.2.0/db_1

Database instance hostname ................ mvrac1.viniciusdba.com.br
Listener port number ................ 1521
Cluster name ................ crs_mv
Database unique name ................ mvdb
Email address for notifications ...............
Outgoing Mail (SMTP) server for notifications ...............
ASM ORACLE_HOME ................ /u01/app/oracle/product/10.2.0/db_1
ASM port ................ 1521
ASM user role ................ SYSDBA
ASM username ................ SYS

-----------------------------------------------------------------
Do you wish to continue? [yes(Y)/no(N)]: Y
Feb 25, 2010 2:23:45 AM oracle.sysman.emcp.EMConfig perform
INFO: This operation is being logged at /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/emca/mvdb/emca_2010-02-25_02-22-59-AM.log.
Feb 25, 2010 2:23:50 AM oracle.sysman.emcp.EMReposConfig dropRepository
INFO: Dropping the EM repository (this may take a while) ...
Feb 25, 2010 2:28:10 AM oracle.sysman.emcp.EMReposConfig invoke
INFO: Repository successfully dropped
Feb 25, 2010 2:28:11 AM oracle.sysman.emcp.EMReposConfig createRepository
INFO: Creating the EM repository (this may take a while) ...
Feb 25, 2010 2:34:20 AM oracle.sysman.emcp.EMReposConfig invoke
INFO: Repository successfully created
Feb 25, 2010 2:34:43 AM oracle.sysman.emcp.EMDBCConfig instantiateOC4JConfigFiles
INFO: Propagating /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_mvrac1_mvdb1 to remote nodes ...
Feb 25, 2010 2:34:45 AM oracle.sysman.emcp.EMDBCConfig instantiateOC4JConfigFiles
INFO: Propagating /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_mvrac2_mvdb2 to remote nodes ...
Feb 25, 2010 2:34:46 AM oracle.sysman.emcp.EMDBCConfig copyAndPropagateOC4JDir
INFO: Propagating /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/isqlplus_mvrac1.viniciusdba.com.br to remote nodes ...
Feb 25, 2010 2:34:48 AM oracle.sysman.emcp.EMDBCConfig copyAndPropagateOC4JDir
INFO: Propagating /u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/isqlplus_mvrac2.viniciusdba.com.br to remote nodes ...
Feb 25, 2010 2:34:59 AM oracle.sysman.emcp.EMAgentConfig deployStateDirs
INFO: Propagating /u01/app/oracle/product/10.2.0/db_1/mvrac1_mvdb1 to remote nodes ...
Feb 25, 2010 2:35:03 AM oracle.sysman.emcp.EMAgentConfig deployStateDirs
INFO: Propagating /u01/app/oracle/product/10.2.0/db_1/mvrac2_mvdb2 to remote nodes ...
Feb 25, 2010 2:35:04 AM oracle.sysman.emcp.util.DBControlUtil secureDBConsole
INFO: Securing Database Control (this may take a while) ...
Feb 25, 2010 2:36:34 AM oracle.sysman.emcp.util.DBControlUtil startOMS
INFO: Starting Database Control (this may take a while) ...
Feb 25, 2010 2:38:57 AM oracle.sysman.emcp.EMDBPostConfig performConfiguration
INFO: Database Control started successfully
Feb 25, 2010 2:39:50 AM oracle.sysman.emcp.EMDBPostConfig performConfiguration
INFO: >>>>>>>>>>> The Database Control URL is https://mvrac1.viniciusdba.com.br:1158/em <<<<<<<<<<<
Feb 25, 2010 2:40:40 AM oracle.sysman.emcp.EMDBPostConfig showClusterDBCAgentMessage
INFO:
****************  Current Configuration  ****************
 INSTANCE            NODE           DBCONTROL_UPLOAD_HOST
----------        ----------        ---------------------

mvdb1             mvrac1            mvrac1.viniciusdba.com.br
mvdb2             mvrac2            mvrac1.viniciusdba.com.br

Enterprise Manager configuration completed successfully
FINISHED EMCA at Feb 25, 2010 2:40:43 AM

Tela inicial do EM:

Finalizo aqui a série sobre a instalação do Oracle RAC 10 Release 2.

Semana que vem voltaremos, agora com a administração do ambiente, bem como os conceitos.

Abraços!

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®.

Série de artigos sobre Instalação do Oracle RAC:

Instalação do Oracle RAC 10g Release 2 – Parte 1: Pré-requisitos
Instalação do Oracle RAC 10g Release 2 – Parte 2: Criação da VM
Instalação do Oracle RAC 10g Release 2 – Parte 3: Instalação do Linux
Instalação do Oracle RAC 10g Release 2 – Parte 4: Configuração do Linux
Instalação do Oracle RAC 10g Release 2 – Parte 5: Clonagem da VM
Instalação do Oracle RAC 10g Release 2 – Parte 6: Pré-instalação do RAC
Instalação do Oracle RAC 10g Release 2 – Parte 7: Instalação do Oracle Clusterware
Instalação do Oracle RAC 10g Release 2 – Parte 8: Instalação do Patchset 10.2.0.4 no Clusterware
Instalação do Oracle RAC 10g Release 2 – Parte 9: Instalação do Oracle Database
Instalação do Oracle RAC 10g Release 2 – Parte 10: Instalação do Patchset 10.2.0.4 no Oracle Database
Instalação do Oracle RAC 10g Release 2 – Parte 11: Criação do Listener no Cluster
Instalação do Oracle RAC 10g Release 2 – Parte 12: Criação do ASM no Cluster
Instalação do Oracle RAC 10g Release 2 – Parte 13: Criação do Banco de Dados no Cluster

===================================

Olá pessoal!

Vimos no último artigo a criação do Banco de Dados RAC.

Veremos hoje como criar o serviço responsável pelo load balance e principalmente, o failover. Vocês verão que é uma operação bem fácil de ser feita.

Agora, executaremos o assistente para criação do serviço, o dbca. Há algumas formas de executar esse assistente:

  • Localmente no servidor, através da VMWare Server Console;
  • Remotamente, através de um software que simule um X-Server (existem diversas opções gratuitas na Internet);
  • Remotamente, através de uma estação Linux/Unix/Mac que tenha a parte gráfica (X) habilitado.

Eu usarei a terceira opção, portanto, a partir da minha estação:

vinicius@Viniciuss-MacBook:~$ ssh -X oracle@172.23.10.11
oracle@172.23.10.11's password:
/usr/bin/xauth:  creating new authority file /home/oracle/.Xauthority

Testando para ver se a parte gráfica está funcionando:

[oracle@mvrac1 ~]$ xclock

O teste funcionou! Vejam:

Pronto!

Vamos executar o dbca:

[oracle@mvrac1 ~]$ dbca

O dbca detectará que a pilha de cluster está em execução, e precisamos selecionar qual será o tipo de ambiente que será configurado:

  • Oracle Real Application Clusters database;
  • Oracle single instance database.

Manteremos a opção Oracle Real Application Clusters database selecionada e clicaremos em Next.

Clicar no item “Services Management” e depois clicar em Next.

O DBCA exibirá a lista de bancos de dados existentes e ativos no cluster. Como só temos o banco de dados mvdb, ele será selecionado automaticamente. Clicar em Next.

dbca_create_service_blank

A janela acima será exibida. Essa janela também aparece na criação do banco de dados. Nela, criaremos no botão Add para criar um novo serviço.

Como exemplo, estou criando um serviço chamado producao. Clicar em OK.

No item “Details for producao”, temos 3 opções disponíveis para as instâncias de banco de dados:

  • Not used: o serviço nunca utilizará a instância de banco de dados, ou seja, nunca haverá conexões feitas àquela instância utilizando esse serviço de banco de dados;
  • Preferred: o serviço SEMPRE utilizará a instância de banco de dados, ou seja, no caso de um cluster de 2 nós, se as 2 instâncias estiverem como “Preferred”, haverá o Load Balance entre as 2 instâncias;
  • Available: o serviço SOMENTE utilizará a instância de banco dados em caso de falha na instância que estiver definida como PREFERRED. Ou seja, se a instância mvdb1 estiver como Preferred, e a instância mvdb2 estiver como Available, as conexões só serão feitas na instância mvdb2 se a instância mvdb1 estiver indisponível.

Como queremos que aconteça o Load Balance entre as 2 instâncias, as 2 instâncias deverão ser preenchidas como Preferred.

Agora configuraremos a parte do serviço responsável pelo failover. Chamamos isso de TAF (Transparent Application Failover).

No item “TAF Policy” temos 3 opções:

  • None: não haverá failover para o serviço.;
  • Basic: ocorrerá o failover básico para o serviço, ou seja, se o usuário estiver conectado na instância mvdb1 executando uma query e a instância ficar indisponível, o usuário será levado para a instância mvdb2;
  • Pre-connect: quando o usuário se conectar pelo serviço na instância mvdb1, automaticamente será criada uma conexão (pré-conexão) na instância mvdb2, isso torna o failover mais rápido, já que haverá uma conexão existente na segunda instância, no entanto, em contra-partida, essa sessão na segunda instância consumirá uma fatia da memória no servidor.

Utilizaremos a política “Basic”.

Clicar em Finish.

A janela acima solicitará confirmação para a criação do serviço no banco de dados mvdb. Clicar em OK.

Uma janela com o progresso da criação do serviço será exibida. Aguardar.

A janela acima será exibida questionando se o DBA deseja realizar mais alguma operação. Clicar em No.

Vamos verificar se os recursos do cluster foram alterados?

Para verificar o status dos recursos 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

Pronto!

Podemos ver que foi registrado no cluster uma serviço de banco de dados para cada nó, além de um recurso com o final .cs, representando o serviço clusterizado (cluster service).

Agora vamos realizar os testes com o serviço.

Porém, para que o failover aconteça com sucesso, a Oracle recomenda que os hostnames públicos, além dos hostnames referentes aos endereços VIP estejam registrados no DNS e/ou no arquivo hosts dos usuários. Como estou usando uma estação de trabalho baseada em Unix, o arquivo é o /etc/hosts, no caso do Windows, é C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS. As seguintes linhas precisam ser adicionadas:

172.23.10.21	mvrac1-vip	mvrac1-vip.viniciusdba.com.br
172.23.10.22	mvrac2-vip	mvrac2-vip.viniciusdba.com.br
172.23.10.11	mvrac1		mvrac1.viniciusdba.com.br
172.23.10.12	mvrac2		mvrac2.viniciusdba.com.br

Outro ponto importantíssimo para que o failover aconteça com sucesso, a entrada do TNSNAMES.ORA deve estar correta. Dentro do próprio servidor, há o TNSNAMES.ORA correto:

PRODUCAO =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = mvrac1-vip.viniciusdba.com.br)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = mvrac2-vip.viniciusdba.com.br)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = producao)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)
      )
    )
  )

Observem que o TNSNAMES aponta para os 2 endereços VIP, ou seja, mesmo que um servidor fique indisponível, o IP VIP que estava nele, irá para o outro servidor.

Além disso, o ambiente pode retornar o erro ORA-12545 ao tentar se conectar pelo serviço criado recentemente.

A correção deste erro é definir o parâmetro LOCAL_LISTENER para que cada nó tenha somente o VIP local associado ao parâmetro. Vejamos:

SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=mvrac1-vip)(PORT=1521)))' scope=both sid='mvdb1';

System altered.

SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=mvrac2-vip)(PORT=1521)))' scope=both sid='mvdb2';

System altered.

Agora sim podemos testar:

sqlplus system/oracle@producao

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Feb 25 00:06:27 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to:
Oracle Database 10g Release 10.2.0.4.0 - Production
With the Real Application Clusters option

SQL> @taf    

 INST# INST_NAME  HOST			       USERNAME   TYPE	     METHOD	FAILED OVER
------ ---------- ---------------------------- ---------- ---------- ---------- -----------
     2 mvdb2	  mvrac2.viniciusdba.com.br    SYSTEM	  SELECT     BASIC	NO

O script taf.sql contém as seguintes linhas:

set linesize 100
col INST# format 99999
col INST_NAME format a10
col HOST format a28
col USERNAME format a10
col TYPE format a10
col METHOD format a10
col "FAILED OVER" format a11

select
  INSTANCE_NUMBER INST#,INSTANCE_NAME INST_NAME,HOST_NAME HOST,
  USERNAME, FAILOVER_TYPE TYPE, FAILOVER_METHOD METHOD,
  FAILED_OVER "FAILED OVER"
from
  V$SESSION a, V$INSTANCE b
where
  USERNAME = (select SYS_CONTEXT ('USERENV', 'SESSION_USER') from DUAL)
and
  SID = (select SYS_CONTEXT ('USERENV', 'SID') from DUAL)
;

De acordo com a saída do script, estamos na instância mvdb2, vamos fazer uma nova conexão para verificar o funcionamento do Load Balance:

SQL> connect system/oracle@producao
Connected.
SQL> @taf

 INST# INST_NAME  HOST			       USERNAME   TYPE	     METHOD	FAILED OVER
------ ---------- ---------------------------- ---------- ---------- ---------- -----------
     1 mvdb1	  mvrac1.viniciusdba.com.br    SYSTEM	  SELECT     BASIC	NO

Funcionou!

Agora, vamos fazer um teste de failover.

Vamos executar como teste, um script que traga muitas linhas como resultado, o script é o query.sql:

select a.*, b.*, c.*
from dba_objects a, dba_objects b, dba_objects c;

Como podem ver, faremos um produto cartesiano. Pois bem, a ideia é a seguinte:

  • Já estamos conectados na instância mvdb1;
  • Executaremos nessa instância, o script query.sql;
  • Enquanto a query é executada, baixaremos a instância mvdb1 com a opção abort;
  • A sessão do usuário SYSTEM deverá ser levada para o servidor mvdb2 e a query continuar o fetch do lugar onde parou, isso, sem o usuário perceber;
  • Executaremos o script taf.sql para verificar se ocorreu o failover.

Vamos lá?

Vamos deixar o comando do shutdown abort pronto para ser processado (vai faltar só pressionar [ENTER]). Com o usuário oracle, em qualquer servidor (mvrac1 ou mvrac2):

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

Assim que a query voltar a processar, cancele o processamento. Se estiver usando o SQL*Plus no Windows, clique em Arquivo / Cancelar, e em seguida, execute o script taf.sql. Caso esteja usando o SQL*Plus em ambiente Unix/Linux, pressione [CTRL] + [C] e, em seguida, execute o script taf.sql. Vejam o resultado:

SQL> @taf

 INST# INST_NAME  HOST			       USERNAME   TYPE	     METHOD	FAILED OVER
------ ---------- ---------------------------- ---------- ---------- ---------- -----------
     2 mvdb2	  mvrac2.viniciusdba.com.br    SYSTEM	  SELECT     BASIC	YES

Observem que agora minha sessão está na instância mvdb2 e a coluna FAILED OVER foi alterada para YES.

Vamos ver um vídeo disso funcionando?

Para ver o vídeo, você precisa ter o Quicktime instalado no seu computador. Baixe ele aqui (é gratuito).

No próximo artigo veremos como configurar o Enterprise Manager.

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®.

Série de artigos sobre Instalação do Oracle RAC:

Instalação do Oracle RAC 10g Release 2 – Parte 1: Pré-requisitos
Instalação do Oracle RAC 10g Release 2 – Parte 2: Criação da VM
Instalação do Oracle RAC 10g Release 2 – Parte 3: Instalação do Linux
Instalação do Oracle RAC 10g Release 2 – Parte 4: Configuração do Linux
Instalação do Oracle RAC 10g Release 2 – Parte 5: Clonagem da VM
Instalação do Oracle RAC 10g Release 2 – Parte 6: Pré-instalação do RAC
Instalação do Oracle RAC 10g Release 2 – Parte 7: Instalação do Oracle Clusterware
Instalação do Oracle RAC 10g Release 2 – Parte 8: Instalação do Patchset 10.2.0.4 no Clusterware
Instalação do Oracle RAC 10g Release 2 – Parte 9: Instalação do Oracle Database
Instalação do Oracle RAC 10g Release 2 – Parte 10: Instalação do Patchset 10.2.0.4 no Oracle Database
Instalação do Oracle RAC 10g Release 2 – Parte 11: Criação do Listener no Cluster
Instalação do Oracle RAC 10g Release 2 – Parte 12: Criação do ASM no Cluster

===================================

Olá pessoal!

Vimos no último artigo a criação do ASM no Cluster.

Veremos hoje como criar e configurar o Banco de Dados RAC. Vocês verão que é uma operação bem fácil de ser feita.

Agora, executaremos o assistente para criação do Banco de Dados, o dbca. Há algumas formas de executar esse assistente:

  • Localmente no servidor, através da VMWare Server Console;
  • Remotamente, através de um software que simule um X-Server (existem diversas opções gratuitas na Internet);
  • Remotamente, através de uma estação Linux/Unix/Mac que tenha a parte gráfica (X) habilitado.

Eu usarei a terceira opção, portanto, a partir da minha estação:

vinicius@Viniciuss-MacBook:~$ ssh -X oracle@172.23.10.11
oracle@172.23.10.11's password:
/usr/bin/xauth:  creating new authority file /home/oracle/.Xauthority

Testando para ver se a parte gráfica está funcionando:

[oracle@mvrac1 ~]$ xclock

O teste funcionou! Vejam:

Pronto!

Agora, vamos criar os diretórios de trace da instância de banco de dados nos servidores mvrac1 e mvrac2, com o usuário oracle.

mvrac1:

[oracle@mvrac1 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/adump
[oracle@mvrac1 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/bdump
[oracle@mvrac1 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/cdump
[oracle@mvrac1 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/udump
[oracle@mvrac1 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/pfile

mvrac2:

[oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/adump
[oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/bdump
[oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/cdump
[oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/udump
[oracle@mvrac2 ~]$ mkdir -p /u01/app/oracle/admin/mvdb/pfile

Vamos executar o dbca:

[oracle@mvrac1 ~]$ dbca

O dbca detectará que a pilha de cluster está em execução, e precisamos selecionar qual será o tipo de ambiente que será configurado:

  • Oracle Real Application Clusters database;
  • Oracle single instance database.

Manteremos a opção Oracle Real Application Clusters database selecionada e clicar em Next.

Manter a opção “Create a Database” e clicar em Next.

A tela acima será exibida, o DBCA solicita que escolhamos em quais nós o banco de dados RAC será criado. Clicar no botão Select All.

Agora, com todos os nós selecionados, clicar em Next.

Nos templates, como já temos o Patchset 10.2.0.4 aplicado, a única opção possível, é a “Custom Database”, onde os datafiles não estão incluídos. Isso porque os templates com os datafiles, nada mais são do que um backup RMAN que acompanha a mídia de instalação do Banco de Dados na versão 10.2.0.1. Portanto, se tentarmos criar o banco de dados usando um template que inclua os datafiles, teremos um erro no meio do processo informando que o banco de dados precisa ser iniciado com a opção “STARTUP UPGRADE”. Portanto, mantenha a opção “Custom Database” selecionada e clique em Next.

Na tela acima devemos especificar o nome global do banco de dados e o prefixo de SID.

Os valores serão iguais:

mvdb

Clicar em Next.

Por enquanto não configuraremos o Enterprise Manager, faremos isso depois. Clicar em Next.

Na tela acima, devemos especificar a senha. Como se trata de um ambiente de testes, mantive a opção “Use the Same Password for All Accounts”. A senha foi definida como oracle. Clicar em Next.

Como a edição utilizada é a Standard Edition, a única opção possível para armazenar o banco de dados é o Automatic Storage Management (ASM). Clicar em Next.

A tela acima exibirá os Disk Groups existentes no ASM. Nesse momento, se necessário, é possível criar outros Disk Groups, no entanto, não o faremos. Basta selecionar o Disk Group DG_DADOS como DG de destino do banco de dados e clicar em Next.

Na tela acima, o Disk Group DG_DADOS foi colocado como área onde o banco de dados será armazenado, clicar em Next.

Não habilitaremos a Flash Recovery Area e nem ativaremos o ArchiveLog Mode no banco de dados. Clicar em Next.

No nosso banco de dados de estudo, não precisamos de todos os componentes. Por isso, na tela acima, só deixei a opção “Enterprise Manager Repository” selecionada. Clicar em Next.

Na tela acima, nós podemos criar os serviços de load balance e failover. Faremos isso posteriormente (nosso próximo artigo). Clicar em Next.

A tela acima nos dará um alerta que precisamos de no mínimo 216MB para a memória disponível para o banco de dados. Esse alerta ocorreu pois a nossa máquina virtual tem apenas 512MB de RAM, não há problema no alerta. Clicar em OK.

Não alteraremos nenhum parâmetro nesse momento. Clicar em Next.

Na tela acima podemos criar mais tablespaces, multiplexar os control files e multiplexar os redo logs. Clicar em Next.

A tela acima é a última tela antes do início da criação do banco de dados. Eu sempre gosto de deixar os scripts de criação do banco de dados guardado. Portanto, clico na opção “Generate Database Creation Scripts”. Depois disso, clicar em Finish.

Uma tela com o resumo sobre a criação do banco de dados será exibida. Clicar em OK.

Uma tela com o progresso da geração dos scripts de criação do banco de dados será exibida. Aguardar.

A tela acima será exibida informando que os scripts foram gerados com sucesso. Clicar em OK.

Uma janela com o progresso da criação do banco de dados será exibida. Aguardar.

Quando o banco de dados for criado, a tela acima será exibida. Basta agora clicar em Exit.

O banco de dados RAC será iniciado. Aguardar. A tela do DBCA será fechada automaticamente.

Vamos verificar e ver se a instância ASM foi criada e se os recursos do cluster foram alterados?

mvrac1:

[oracle@mvrac1 ~]$ ps -ef |grep pmon | grep -v grep
oracle    5342     1  0 Feb22 ?        00:00:21 asm_pmon_+ASM1
oracle   28942     1  0 Feb23 ?        00:00:31 ora_pmon_mvdb1

mvrac2:

[oracle@mvrac2 ~]$ ps -ef |grep pmon | grep -v grep
oracle    5040     1  0 Feb22 ?        00:00:00 asm_pmon_+ASM2
oracle    5268     1  0 Feb23 ?        00:00:00 ora_pmon_mvdb2

Pudemos ver que o banco de dados está em execução nos 2 servidores através das instâncias mvdb1 e mvdb2 respectivamente.

Para verificar o status dos recursos 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.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

Pronto!

Pudemos ver que foi registrado no cluster uma instância de banco de dados para cada nó, além de um recurso com o final .db, representando o banco de dados.

No próximo artigo veremos como criar e configurar os serviços de failover e load balance, bem como simular uma situação de failover, além de configurar o Enterprise Manager.

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®.