Tag Archive: oracle rac

 

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

Conforme prometido, série de artigos para adição de um nó ao cluster:

Adição/Remoção de Nó – Parte 1: Pré-requisitos de software
Adição/Remoção de Nó – Parte 2: Criação da 3ª Máquina Virtual
Adição/Remoção de Nó – Parte 3: Instalação do Linux

Adição/Remoção de Nó – Parte 4: Configuração do Linux

===================================
Olá pessoal!
Falta pouco para que iniciemos de fato a adição do nó mvrac3 ao cluster!
Neste artigo de hoje, veremos os seguintes itens:

  • Criação de equivalência de usuários para acesso SSH entre os 3 nós;
  • Scan dos discos ASM no servidor mvrac3;
  • Criação de block devices no servidor mvrac3.

Vamos lá!

Com o servidor mvrac3 desligado, precisaremos pegar as referências dos discos attachados aos servidores mvrac1 e mvrac2 que desempenham o papel de disco do storage.

Pelo Windows Explorer, vá em G:\VMware\mvrac1.

Procure por um arquivo com a extensão VMX e abra-o num editor de textos, selecione e copie o seguinte trecho do arquivo:

scsi1.present = "TRUE"
scsi1:0.present = "TRUE"
scsi1:0.fileName = "G:\VMWARE\SharedDisks\sdisk01.vmdk"
scsi1:0.mode = "independent-persistent"
scsi1:1.present = "TRUE"
scsi1:1.fileName = "G:\VMWARE\SharedDisks\sdisk02.vmdk"
scsi1:1.mode = "independent-persistent"
scsi1:2.present = "TRUE"
scsi1:2.fileName = "G:\VMWARE\SharedDisks\sdisk03.vmdk"
scsi1:2.mode = "independent-persistent"
scsi1.virtualDev = "lsilogic"

Cole este trecho no final do arquivo com a extensão VMX no diretório G:\VMWare\mvrac3. Salve o arquivo e mande iniciar a máquina virtual.

Como já citado anteriormente, fizemos a instalação dos produtos em sistemas de arquivos (file systems) locais. Como havíamos criado chaves SSH para o usuário oracle dos nós mvrac1 e mvrac2, deixamos estabelecida a equivalência de usuário entre este usuário nos servidores já citados. A equivalência de usuário também é chamada de relação de confiança. Nesta relação de confiança, a comunicação entre os servidores ocorre sem a solicitação de senha, isto é um pré-requisito para ambientes em Cluster Oracle, pois o Oracle Universal Installer (OUI), dbca, netca, emca, OPatch, dentre outras ferramentas, sempre realizarão cópias de arquivos entre os nós do cluster. A equivalência de usuário poderá ocorrer através de duas maneiras:

  • rsh/rcp;
  • ssh/scp.

A configuração por rsh/rcp é mais simples de ser feita, no entanto, não é a recomendada, já que não é segura. Já no ssh/scp, os dados são enviados pela rede de forma criptografada, o que aumenta a segurança. Inclusive, em muitas empresas, as portas utilizadas em rsh/rcp nem são liberadas no firewall por motivos de segurança. A configuração do ssh/scp é um pouco mais chata, mas é a que veremos aqui por ser a mais segura.

Para realizar a configuração da equivalência de usuários para acesso via SSH, é necessário criar as chaves SSH de acesso ao usuário. Como a equivalência de usuários já existe entre os servidores mvrac1 e mvrac2 para o usuário oracle, os passos serão esses:

  • Criação das chaves do usuário oracle do servidor mvrac3;
  • Criação das chaves do usuário oracle do servidor mvrac2;
  • Append do arquivo de chaves autorizadas no servidor mvrac1, incluindo as chaves SSH do usuário oracle do servidor mvrac3. Inclusão do servidor mvrac3 num arquivo de hosts conhecidos para não mais confirmar o acesso via SSH e isso ser feito automaticamente entre os servidores.

Então, vamos para o primeiro passo, criar as chaves do usuário oracle no servidor mvrac3. Com o usuário oracle a partir do servidor mvrac3:

[oracle@mvrac3 ~]$ cd /home/oracle
[oracle@mvrac3 ~]$ mkdir .ssh
[oracle@mvrac3 ~]$ cd .ssh
[oracle@mvrac1 .ssh]$ ssh-keygen -t dsa

Pressionar [ENTER] até voltar para o shell.

[oracle@mvrac3 .ssh]$ ssh-keygen -t rsa

Pressionar [ENTER] até voltar para o shell.

Vamos verificar o tamanho do arquivo de chaves autorizadas. No servidor mvrac1:

[oracle@mvrac1 .ssh]$ ls -l authorized_keys
-rw-r--r-- 1 oracle oinstall 2072 Aug 16 19:43 authorized_keys

Observem que o arquivo authorized_keys tem 2072 bytes de tamanho, pois, por enquanto, só possui as chaves do servidor mvrac1 e mvrac2. Agora, colocaremos dentro desse mesmo arquivo, o conteúdo das chaves públicas do usuário oracle do servidor mvrac3:

[oracle@mvrac1 .ssh]$ ssh mvrac3 cat `pwd`/*.pub >> authorized_keys
The authenticity of host 'mvrac3 (172.23.10.13)' can't be established. RSA key fingerprint is ee:df:af:11:67:a9:b5:0a:e0:8f:3d:69:2a:3f:ef:6e. Are you sure you want to continue connecting (yes/no)? yes

Observem que eu tive que confirmar com yes e em seguida, terei que colocar a senha do usuário oracle do servidor mvrac3:

oracle@mvrac3's password:

Vamos verificar o tamanho do arquivo de chaves autorizadas após a inclusão das chaves do servidor mvrac3. No servidor mvrac1:

[oracle@mvrac1 .ssh]$ ls -l authorized_keys
-rw-r--r-- 1 oracle oinstall 3108 Sep 18 20:43 authorized_keys

Observem que o arquivo authorized_keys tem 3108 bytes de tamanho, e, desta forma, podemos concluir que o mesmo aumentou de tamanho. Logo, as chaves do servidor mvrac3 também estão no arquivo.

Esta versão de arquivo (com as chaves dos servidores mvrac1, mvrac2 e mvrac3 ainda existe somente no servidor mvrac1. Devemos copiá-lo para o servidor mvrac2 e também no servidor mvrac3, nesse mesmo diretório, /home/oracle/.ssh. Como este arquivo ainda não existe no servidor mvrac3, a senha para este servidor será solicitada:

[oracle@mvrac1 .ssh]$ scp -p authorized_keys mvrac2:`pwd`
authorized_keys         100% 3108     2.0KB/s   00:00
[oracle@mvrac1 .ssh]$ scp -p authorized_keys mvrac3:`pwd`
oracle@mvrac3's password:
authorized_keys         100% 3108     2.0KB/s   00:00

Bom, como no servidor mvrac1 eu estava no diretório /home/oracle/.ssh. E o arquivo authorized_keys tem que ir para o mesmo diretório no servidor mvrac2 e também no servidor mvrac3, observem que eu usei um comando do Linux dentro do comando scp. O comando foi o pwd. E sempre que quisermos usar um comando dentro de outro comando, deveremos colocá-lo entre crases: `pwd`. Dessa forma, ele executará o comando pwd no servidor mvrac1 e com base na saída do comando (/home/oracle/.ssh), jogará o arquivo dentro desse diretório no outro servidor. Se o diretório não existisse, teríamos um erro.

Vamos testar para ver se a equivalência de usuários está funcionando?

[oracle@mvrac1 .ssh]$ ssh mvrac3.viniciusdba.com.br date
The authenticity of host 'mvrac3.viniciusdba.com.br (172.23.10.13)' can't be established.
RSA key fingerprint is ee:df:af:11:67:a9:b5:0a:e0:8f:3d:69:2a:3f:ef:6e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'mvrac3.viniciusdba.com.br' (RSA) to the list of known hosts.
Wed Sep 18 20:52:38 BRT 2012

Observem que eu tive que digitar yes. Mas não precisei mais digitar a senha. Porque?

Não precisei digitar mais a senha porque a equivalência de usuários funcionou. Mas, o host mvrac3.viniciusdba.com.br ainda não é um host conhecido para o SSH. Dessa forma, no servidor mvrac1, com o usuário oracle, deveremos fazer o seguinte:

ssh mvrac3 date
ssh mvrac3-priv date
ssh mvrac3.viniciusdba.com.br date
ssh mvrac3-priv.viniciusdba.com.br date

Em todos as saídas, deveremos sempre confirmar com yes:

Are you sure you want to continue connecting (yes/no)? yes

Quando executar as linhas acima, para confirmar se está tudo OK, basta refazer o comando incluindo todos os servidores:

ssh mvrac1 date
ssh mvrac1-priv date
ssh mvrac1.viniciusdba.com.br date
ssh mvrac1-priv.viniciusdba.com.br date
ssh mvrac2 date
ssh mvrac2-priv date
ssh mvrac2.viniciusdba.com.br date
ssh mvrac2-priv.viniciusdba.com.br date
ssh mvrac3 date
ssh mvrac3-priv date
ssh mvrac3.viniciusdba.com.br date
ssh mvrac3-priv.viniciusdba.com.br date

Ele não deverá mais pedir confirmação para nenhum host:

[oracle@mvrac1 .ssh]$ ssh mvrac3 date
Wed Sep 18 20:54:00 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac1-priv date
Wed Sep 18 20:54:00 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac1.viniciusdba.com.br date
Wed Feb 18 20:54:00 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac1-priv.viniciusdba.com.br date
Wed Feb 18 20:54:01 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac2 date
Wed Feb 18 20:54:01 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac2-priv date
Wed Feb 18 20:54:02 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac2.viniciusdba.com.br date
Wed Feb 18 20:54:02 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac2-priv.viniciusdba.com.br date
Wed Sep 18 20:54:03 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac3 date
Wed Feb 18 20:54:04 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac3-priv date
Wed Feb 18 20:54:05 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac3.viniciusdba.com.br date
Wed Feb 18 20:54:06 BRT 2012
[oracle@mvrac1 .ssh]$ ssh mvrac3-priv.viniciusdba.com.br date
Wed Sep 18 20:54:07 BRT 2012

Isso atualizará no servidor mvrac1, dentro do diretório corrente, /home/oracle/.ssh, o arquivo known_hosts (hosts conhecidos):

[oracle@mvrac1 .ssh]$ ls -l known_hosts
-rw-r--r-- 1 oracle oinstall 4869 Sep 20 20:54 known_hosts

Agora basta copiar esse arquivo para o outro servidor:

[oracle@mvrac1 .ssh]$ scp -p known_hosts mvrac2:`pwd`
known_hosts             100% 4869     3.2KB/s   00:00
[oracle@mvrac1 .ssh]$ scp -p known_hosts mvrac3:`pwd`
known_hosts             100% 4869     3.2KB/s   00:00

Pronto! Equivalência de usuários devidamente configurada!

Agora checar o particionamento de discos.

Como vocês se lembram, temos 4 discos disponibilizados:

  • 1 disco de 12GB (disco local);
  • 3 discos de 5GB (discos storage).

Não mexeremos nas partições do disco local, pois essas já foram configuradas durante a instalação do Linux.

Temos 3 discos de 5GB. Para instalarmos o Oracle RAC precisamos do seguinte:

  • 3 partições para armazenar Voting Disk;
  • 2 partições para armazenar OCR;
  • 3 partições que serão os discos ASM.

Vamos consultar os discos existentes no servidor mvrac3? Como root:

[root@mvrac3 ~]# fdisk -l

Disk /dev/sda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1435    11526606   83  Linux
/dev/sda2            1436        1566     1052257+  82  Linux swap / Solaris

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         652     5237158+   5  Extended
/dev/sdb5               1          32      256977   83  Linux
/dev/sdb6              33          64      257008+  83  Linux
/dev/sdb7              65          96      257008+  83  Linux
/dev/sdb8              97         128      257008+  83  Linux
/dev/sdb9             129         652     4208998+  83  Linux

Disk /dev/sdc: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         652     5237158+   5  Extended
/dev/sdc5               1          32      256977   83  Linux
/dev/sdc6              33          64      257008+  83  Linux
/dev/sdc7              65          96      257008+  83  Linux
/dev/sdc8              97         128      257008+  83  Linux
/dev/sdc9             129         652     4208998+  83  Linux

Disk /dev/sdd: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1         652     5237158+   5  Extended
/dev/sdd5               1          32      256977   83  Linux
/dev/sdd6              33          64      257008+  83  Linux
/dev/sdd7              65         652     4723078+  83  Linux

As partições foram listadas!

Agora, faremos o SCAN dos discos ASM.

Para fazermos as partições dos discos ASM, basta usarmos a ASMLib com o usuário root:

[root@mvrac3 oracle]# /etc/init.d/oracleasm scandisks
Scanning the system for Oracle ASMLib disks:               [  OK  ]

Agora precisamos verificar se os discos foram realmente enxergados:

[root@mvrac3 oracle]# /etc/init.d/oracleasm listdisks
ASMDISK1
ASMDISK2
ASMDISK3

Pronto! Discos do ASM listados!

Agora falta apenas criar os block devices. Usaremos o utilitário chamado UDEV para isso. Para criarmos esses dispositivos, criaremos um arquivo com as regras necessárias no diretório /etc/udev/rules.d. O arquivo precisa ter a extensão .rules.

Agora criaremos o arquivo que criará os block devices:

[root@mvrac3 oracle]# vi 63-oracle-block.rules

O conteúdo do arquivo 63-oracle-block.rules será:

KERNEL=="sdb6", NAME="ocr1", OWNER="root", GROUP="dba", MODE="0640"
KERNEL=="sdb8", NAME="voting1", OWNER="oracle", GROUP="dba", MODE="0640"
KERNEL=="sdc6", NAME="ocr2", OWNER="root", GROUP="dba", MODE="0640"
KERNEL=="sdc8", NAME="voting2", OWNER="oracle", GROUP="dba", MODE="0640"
KERNEL=="sdd6", NAME="voting3",OWNER="oracle",GROUP="dba", MODE="0640"

Após isso, faremos o restart do serviço udev:

[root@mvrac3 rules.d]# start_udev
Starting udev:                                             [  OK  ]

Agora verificaremos se os devices foram criados:

[root@mvrac3 rules.d]# ls -l /dev/ocr* /dev/voting*
brw-r----- 1 oracle dba   8, 22 Sep 18 21:34 /dev/ocr1
brw-r----- 1 oracle dba   8, 38 Sep 18 21:35 /dev/ocr2
brw-r----- 1 root   dba   8, 24 Sep 18 21:34 /dev/voting1
brw-r----- 1 root   dba   8, 40 Sep 18 21:35 /dev/voting2
brw-r----- 1 oracle dba   8, 54 Sep 18 21:35 /dev/voting3

Os dispositivos foram criados!

Nesse momento estamos prontos para iniciar a adição do Nó ao Cluster!

Nos veremos no próximo post, semana que vem!

Um abraço!

Vinicius

——————————-

PS:

Observação:

Apenas para ficar claro, sobre as partições de discos, num ambiente corporativo eu costumo pedir o seguinte:

  • 1 disco (LUN) de 2GB para utilizar as partições raw devices (esse disco posteriormente será eliminado);
  • 2 discos (LUN’s) de 512MB para utilizar as partições block devices;
  • 1 disco (LUN) de 256MB para utilizar a partição block device;
  • Quantidade “X de discos para ASM, aí vai depender do tamanho do banco de dados.






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

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

Conforme prometido, série de artigos para adição de um nó ao cluster:

Adição/Remoção de Nó – Parte 1: Pré-requisitos de software
Adição/Remoção de Nó – Parte 2: Criação da 3ª Máquina Virtual
Adição/Remoção de Nó – Parte 3: Instalação do Linux

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

Olá pessoal!

Vimos no último artigo como instalar o Linux no servidor mvrac3.

Pois bem, agora precisamos configurar o nosso sistema operacional para atender os pré-requisitos necessários para instalar o software Oracle de banco de dados e clusterização.

Os pré-requisitos são citados na Documentação Oficial:

No entanto, quando o software de banco de dados 10g Release 2 foi lançado, ainda não estava disponível no mercado o Red Hat Enterprise Linux 5. Por esse motivo, nos documentos acima, essa versão de sistema operacional não é citada. Somente é possível encontrar esses pré-requisitos no Metalink (Oracle Support). Para acesso ao Metalink, é necessário ter um contrato de suporte junto à Oracle (CSI). No Metalink, é possível encontrar notas de suporte atualizadas para as versões de banco ainda suportadas pela Oracle.

A Nota 419646.1 cita os pré-requisitos necessários para instalar o Oracle 10g Release 2 no Red Hat Enterprise Linux 5 32bit.

Vamos lá, para os pacotes de sistema operacional (os RPM’s), a lista dos pré-requisitos é a seguinte:

  • binutils-2.17.50.0.6-2.el5;
  • compat-libstdc++-33-3.2.3-61;
  • elfutils-libelf-0.125-3.el5;
  • elfutils-libelf-devel-0.125;
  • gcc-4.1.1-52;
  • gcc-c++-4.1.1-52;
  • glibc-2.5-12;
  • glibc-common-2.5-12;
  • glibc-devel-2.5-12;
  • glibc-headers-2.5-12;
  • libaio-0.3.106;
  • libaio-devel-0.3.106;
  • libgcc-4.1.1-52;
  • libstdc++-4.1.1 ;
  • libstdc++-devel-4.1.1-52.e15;
  • make-3.81-1.1;
  • sysstat-7.0.0;
  • unixODBC-2.2.11;
  • unixODBC-devel-2.2.11.

Para pesquisar se temos os pacotes, uma das melhores maneiras é utilizando a seguinte sintaxe, com o binário rpm com o usuário root:

rpm -qa --queryformat "%{NAME}-%{VERSION}.%{RELEASE} (%{ARCH})\n" | grep package_name

Como exemplo, vou pesquisar o pacote binutils:

rpm -qa --queryformat "%{NAME}-%{VERSION}.%{RELEASE} (%{ARCH})\n" | grep binutils

A saída do comando será:

binutils-2.17.50.0.6.9.el5 (i386)

De acordo com a lista acima, e com a instalação do sistema operacional realizada, os únicos pacotes que ainda precisamos instalar são os seguintes:

elfutils-libelf-devel-0.125;
libaio-devel-0.3.106;
unixODBC-2.2.11;
unixODBC-devel-2.2.11.

Para instalar esses pacotes, primeiramente devemos apontar na Console da VMWare que essa máquina virtual utilizará a imagem ISO do Linux:

Após isso, deveremos montar o DVD no sistema operacional, acessar o DVD e instalar os pacotes restantes:

[root@mvrac3 ~]# mount /dev/hdc /media
mount: block device /dev/hdc is write-protected, mounting read-only
[root@mvrac3 ~]# cd /media/Server/
[root@mvrac3 Server]# rpm -ivh elfutils-libelf-devel*
warning: elfutils-libelf-devel-0.137-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ############################### [100%]
   1:elfutils-libelf-devel-s############################### [ 50%]
   2:elfutils-libelf-devel  ############################### [100%]
[root@mvrac3 Server]# rpm -ivh libaio-devel*
warning: libaio-devel-0.3.106-3.2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ############################### [100%]
   1:libaio-devel           ############################### [100%]
[root@mvrac3 Server]# rpm -ivh unixODBC*
warning: unixODBC-2.2.11-7.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ############################### [100%]
   1:unixODBC               ############################### [ 33%]
   2:unixODBC-devel         ############################### [ 67%]
   3:unixODBC-kde           ############################### [100%]

Pronto! Uma parte dos pré-requisitos foi concluída!

O próximo passo serão os parâmetros de kernel.

Os seguintes parâmetros precisam ser adicionados ao arquivo de configuração /etc/sysctl.conf

kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144

Após colocar esses parâmetros no arquivo acima especificado, para efetivar os parâmetros no sistema operacional, o seguinte comando deverá ser executado como root:

sysctl -p

Agora, faremos a criação dos grupos e usuário no sistema operacional. Para o ambiente com Oracle RAC, a Oracle solicita que todos os usuários e grupos envolvidos na instalação do software Oracle, possuam os mesmos ID’s em todas as máquinas. Por isso, os grupos oinstall, dba e o usuário oracle serão criados da seguinte forma:

groupadd -g 1521 oinstall
groupadd -g 1522 dba
useradd -g oinstall -G dba -u 1521 oracle

A senha do usuário oracle deverá ser definida:

[root@mvrac3 Server]# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully

Com os grupos e usuário criados, agora os diretórios deverão ser criados:

mkdir -p /u01/app/oracle/oraInventory
mkdir -p /u01/app/oracle/product/10.2.0/crs
mkdir -p /u01/app/oracle/product/10.2.0/db_1
chown -R oracle:oinstall /u01

Num ambiente corporativo, é recomendado instalar um Oracle Home para o ASM separadamente do Oracle Home do banco de dados. Como estamos num ambiente virtualizado, utilizarei o ASM e o banco de dados no mesmo Oracle Home.

Agora, o arquivo /etc/security/limits.conf deverá ser editado e as seguintes linhas deverão ser adicionadas:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

O próximo arquivo a ser editado é o /etc/pam.d/login:

 session required pam_limits.so

O próximo arquivo a ser editado é o /etc/profile:

if [ $USER = "oracle" ]; then
	ulimit -u 16384
	ulimit -n 65536
fi

O módulo hangcheck-timer deverá ser carregado no kernel. Além disso, ele deverá ser carregado automaticamente quando o servidor for iniciado novamente. Num próximo artigo eu definirei em detalhes sobre o que é o hangcheck-timer. Editar o arquivo /etc/rc.d/rc.local e inserir a seguinte linha no final arquivo:

/sbin/insmod /lib/modules/2.6.18-128.el5/kernel/drivers/char/hangcheck-timer.ko hangcheck_tick=1 hangcheck_margin=10 hangcheck_reboot=1

Após isso, executar o arquivo e verificar se o módulo foi carregado:

[root@mvrac3 ~]# /etc/rc.d/rc.local
[root@mvrac3 ~]# lsmod |grep hangcheck
hangcheck_timer         8025  0

Outro ponto importante num ambiente clusterizado, é o horário dos servidores. Como os servidores vão “hospedar” o mesmo banco de dados, é importante que o horário desses servidores estejam sincronizados. Por este motivo, é recomendado utilizar um servidor NTP (Network Time Protocol). Muitas empresas têm servidores NTP internamente, na sua própria rede, e na grande maioria das vezes, esses servidores NTP apontam para um servidor NTP externo, muito preciso, brasileiro, que é o servidor da Rede Nacional de Ensino e Pesquisa (RNP).

Se a empresa não tiver um servidor NTP interno, e os servidores de banco de dados conseguirem acessar a Internet, basta colocar a seguinte informação na crontab do usuário root no servidor de banco de dados:

 * * * * * /usr/sbin/ntpdate ntp.cais.rnp.br >/dev/null 2>/dev/null

Com isso, o servidor sempre terá a hora sincronizada.

Para garantir que o serviço está OK, ou seja, que o servidor de banco de dados consegue utilizar o binário ntpdate para acessar o servidor da RNP, basta executar o seguinte comando como root:

[root@mvrac3 ~]# ntpdate ntp.cais.rnp.br
11 Sep 00:06:46 ntpdate[23646]: step time server 200.144.121.33 offset 90541.348582 sec

O próximo passo é configurar o arquivo /etc/hosts do servidor. Nesse arquivo, teremos a configuração de todos os servidores que farão parte do cluster (os servidores criados anteriormente, mvrac1 e mvrac2 e o novo servidor mvrac3):

# ========================================
# Arquivo /etc/hosts configurado para utilizacao do Oracle RAC
# Configurado por Marcus Vinicius
# 11/09/2012
# ========================================

# Localhost
127.0.0.1         localhost.localdomain      localhost

# Oracle RAC 10g
# -----------------

# Rede Publica
172.23.10.11   mvrac1.viniciusdba.com.br       mvrac1
172.23.10.12   mvrac2.viniciusdba.com.br       mvrac2
172.23.10.13   mvrac3.viniciusdba.com.br       mvrac3

# InterConnect - Conexao Privada
10.0.0.11      mvrac1-priv.viniciusdba.com.br  mvrac1-priv
10.0.0.12      mvrac2-priv.viniciusdba.com.br  mvrac2-priv
10.0.0.13      mvrac3-priv.viniciusdba.com.br  mvrac3-priv

# Virtual IP's
172.23.10.21   mvrac1-vip.viniciusdba.com.br   mvrac1-vip
172.23.10.22   mvrac2-vip.viniciusdba.com.br   mvrac2-vip
172.23.10.23   mvrac3-vip.viniciusdba.com.br   mvrac3-vip

Atenção:

O arquivo /etc/hosts acima deverá estar igual nos três servidores. Isso significa que você deve sobrescrever o arquivo /etc/hosts existente no servidor mvrac1 e mvrac2 com o conteúdo exibido acima.

Por enquanto, para finalizarmos os pré-requisitos, falta instalarmos e configurarmos a ASMLib. Eu explicarei o porquê de utilizarmos essa LIB num artigo posterior.

Para baixarmos a ASMLib, precisamos acessar o seguinte link:

Oracle ASMLib Page / Downloads / Red Hat Enterprise Linux 5 AS*.

Deveremos encontrar a seção na página que trata da arquitetura 32bit:

Intel IA32 (x86) Architecture

Após encontrarmos, os dois primeiros arquivos deverão ser baixados:

Após baixar esses dois arquivos, procurar a versão correta da Lib para o Kernel utilizado no sistema operacional: 2.6.18-128.el5. Pode ser que você encontre variações como 2.6.18-128.1.1.el5 e assim por diante. Ignore essas versões, encontre a versão exata do Kernel:

Baixar os três arquivos, transferí-los via SCP/FTP para o servidor e instalá-los, com o usuário root:

[root@mvrac3 ~]# rpm -ivh oracleasm*
warning: oracleasm-2.6.18-128.el5-2.0.5-1.el5.i686.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ############################### [100%]
   1:oracleasm-support      ############################### [ 33%]
   2:oracleasm-2.6.18-128.el############################### [ 67%]
   3:oracleasmlib           ############################### [100%]

Após instalar os pacotes, deveremos configurar a ASMLib no sistema operacional:

[root@mvrac3 ~]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting  without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver:                     [  OK  ]
Scanning the system for Oracle ASMLib disks:               [  OK  ]

Pronto! A primeira fase de pré-requisitos foi concluída! Falta agora particionar os discos e criar a equivalência de usuários entre os servidores que farão parte do cluster.
Como estamos num ambiente virtualizado, podemos agora baixar esse servidor, para clonar esse servidor para a nova máquina virtual (mvrac2).

Baixar o servidor:

 shutdown -h now

No próximo artigo veremos como clonar esse servidor para criar a nova máquina virtual.

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

E o blog renasceu!

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

Conforme prometido, série de artigos para adição de um nó ao cluster:

Adição/Remoção de Nó – Parte 1: Pré-requisitos de software
Adição/Remoção de Nó – Parte 2: Criação da 3ª Máquina Virtual

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

Olá pessoal!

A partir de hoje, retomaremos a adição de um nó ao cluster Oracle RAC existente.

Os posts de como criar e configurar um cluster e um banco de dados Oracle RAC você vê na primeira parte, ali em cima, no começo do post.

Em seguida, cito os dois primeiros posts de Adição/Remoção de Nó. O último post desta série foi em Maio/2011, mas, a partir de hoje, retomaremos à todo vapor e pretendo concluir logo esta série (Adição e Remoção). Pois, em seguida, partiremos para a atualização do RAC 10gR2 para 11gR2.

Vamos lá?!

Já temos a máquina virtual mvrac3 criada. Agora iniciaremos a instalação do sistema operacional.

Bom, conforme o post Instalação do Oracle RAC 10g Release 2 – Parte 1: Pré-requisitos, eu usarei o Oracle Enterprise Linux 5 Update 3 32bit. Quem tem o CentOS 5 Update 3 32bit ou o Red Hat Enterprise Linux 5 Update 3 32bit, é a mesma coisa.

Na tela da VMWare Server Console, clique duas vezes em CD-ROM (IDE 1:0), a janela abaixo será exibida:

Basta clicar em “Use ISO image” e em seguida clicar em Browse para navegar entre os diretórios até encontrar o arquivo ISO do DVD de instalação do Linux. No meu caso, deixei em G:\VMWARE\Software. Depois disso, clicar em OK.

Depois disso, basta clicar no botão “Power On” que é simbolizado por um ícone parecido com o Play, na cor verde.

A seguinte tela será exibida:

Nessa tela, basta pressionar a tecla [ENTER] e a seguinte janela será exibida:

Essa tela fará o teste da mídia de instalação. Como estamos num ambiente virtualizado e instalando a partir de uma imagem ISO, basta pressionar a tecla [TAB] para selecionar a opção Skip e em seguida pressionar a tecla [ENTER]. Num ambiente corporativo, é interessante realizar esse teste, mesmo considerando que ele demora um pouco. Caso a mídia tenha algum risco que a impeça de ser corretamente lida, é a partir desse teste que descobriremos isso. É muito ruim descobrir esse tipo de erro no meio da instalação!!

A seguinte tela será exibida:

Clicar em Next:

Nessa tela será necessário selecionar um idioma para o sistema operacional. Eu deixei a opção English selecionada. Clicar em Next:

Especificar um layout de teclado, no meu caso, o layout é o U.S. International. Aqui no Brasil, será muito frequente selecionar o ABNT. Clicar em Next:

Para que o disco possa ser lido no Linux, ele precisará ser inicializado. Temos 4 discos no total: 1 de 12GB e 3 de 5GB. Nesse caso, deveremos clicar no botão Yes para os 4 discos. Deixei apenas uma tela como exemplo.

No combo, deixar a opção “Create custom layout” selecionada. Clicar em Next:

Clicar no botão New para criar uma nova partição. A seguinte tela será exibida:

No tipo de sistema de arquivos, selecionar Swap. Para o tamanho, deixe com 1GB de tamanho: 1024MB. Lembrando que o tamanho apropriado de swap é citado no documento de instalação do banco de dados para o sistema operacional apropriado. Clicar em OK.

A seguinte tela será exibida com a informação de que a partição de swap foi configurada para criação (não exibida aqui):

Precisamos criar a partição da raiz do sistema operacional (/), como se trata de um ambiente virtualizado, criaremos também na partição raiz o diretório /u01, local onde será instalado o software Oracle. Portanto, o /u01 não terá uma partição exclusiva no disco local. Clicar no botão New para criar uma nova partição:

No campo Mount Point, especificar o seguinte valor: /

No campo Additional Size Options, deixar a opção “Fill to maximum allowable size”. Isso significa que a partição / pegará todo o espaço disponível no disco para ela. Clicar em OK.

Na tela acima, agora, a partição /dev/sda1 será a partição raiz (/), e a partição /dev/sda2 será a partição de swap. Gostaria de lembrar mais uma vez que essa instalação não segue as melhores práticas de instalação do sistema operacional, onde é recomendado criar uma partição exclusiva para o /boot, dentre outras coisas. Ela foi feita apenas para facilitar na instalação do Oracle RAC. Clicar em Next:

Na tela acima, é possível modificar as opções de boot. No entanto, essa ação não é necessária. Clicar em Next:

A tela acima será exibida. Nela é possível modificar as configurações das placas de rede eth0 e eth1, além das opções de hostname, gateway e DNS. Selecionar a placa eth0 e clicar no botão Edit:

Como a rede em questão não utiliza IPv6, eu desabilitei essa opção desmarcando o campo “Enable IPv6 support”. Para o restante das configurações, eu deixei o campo “Enable IPv4 support” selecionado, assim como a opção Manual Configuration. A placa eth0 foi configurada da seguinte forma:

IP Address: 172.23.10.13
Prefix (Netmask): 255.255.255.0.

Clicar em OK.

A tela acima será exibida já com a placa eth0 configurada (a tela acima é apenas uma representação gráfica). Agora precisamos configurar a placa eth1. Selecione essa placa e clique em Edit:

Como a rede em questão não utiliza IPv6, eu desabilitei essa opção desmarcando o campo “Enable IPv6 support”. Para o restante das configurações, eu deixei o campo “Enable IPv4 support” selecionado, assim como a opção Manual Configuration. A placa eth0 foi configurada da seguinte forma:

IP Address: 10.0.0.13
Prefix (Netmask): 255.0.0.0.

Clicar em OK.

A tela acima será exibida. As placas eth0 e eth1 já estarão configuradas. A opção “Active on Boot” para ambas as placas deverão estar selecionadas.

Além disso, o hostname deverá ser definido manualmente: mvrac3.viniciusdba.com.br

Para o Gateway e o DNS, nesse caso, o valor será o mesmo: 172.23.20.1.

Clicar em Next:

Escolher o fuso horário apropriado. Clicar em Next:

A senha de root deverá ser especificada na janela acima duas vezes. Clicar em Next:

Na tela acima, escolheremos a opção “Customize now” para realizar a customização dos pacotes do sistema operacional que deverão ser instalados. Clicar em Next:

Na categoria Applications, as únicas opções que deverão ficar selecionadas são:

  • Editors;
  • Graphical Internet;
  • Office/Productivity.

Clicar na categoria Development:

Na categoria Development, as únicas opções que deverão ficar selecionadas são:

  • Development Tools;
  • GNOME Software Development;
  • Legacy Software Development;
  • X Software Development.

No item X Software Development, clicar no botão Optional packages:

O item libxp-devel-1.0.0-8.1.el5.i386 deverá ser selecionado. Clicar no botão Close.

Clicar agora na categoria Base System:

Selecionar o item System Tools e clicar no botão Optional packages:

Selecionar o item sysstat-7.0.2-3.el5.i386 e clicar no botão Close.

Clicar no botão Next.

Para iniciar a instalação, clicar no botão Next (tela acima):

A tela acima será exibida com o progresso da instalação.

Quando a primeira fase da instalação for concluída, a seguinte tela será exibida:

Basta clicar no botão Reboot. Assim que o servidor (máquina virtual) for reiniciado, a seguinte tela será exibida:

Clicar no botão Forward:

Na tela acima, deveremos concordar com o acordo de licença. Basta clicar na opção “Yes, I agree to the License Agreement” e clicar no botão Forward:

O Firewall deverá ser desabilitado. Para isso, basta selecionar a opção Disabled no combo Firewall. Clicar em Forward:

Um alerta será exibido informando que haverá um risco de segurança pelo fato do Firewall estar desabilitado. Clicar em Yes:

O SELinux também deverá ser desabilitado. Para isso, basta selecionar a opção Disabled no combo SELinux Setting. Clicar em Forward:

Uma mensagem informativa será exibida relatando que por causa da alteração do SELinux, será necessário rebootar o sistema operacional. Esse reboot será feito no final dessa primeira fase de configuração do sistema operacional (fase pós-instalação). Clicar em Yes:

Nessa tela, é possível ativar o Kdump, eu não o fiz. Clicar em Forward:

A data e hora deverão ser ajustadas. Clicar em Forward:

A tela acima será exibida, nesse momento, não será necessário criar os usuários no sistema operacional, portanto, clicar em Forward:

Um alerta será exibido pois um usuário não foi criado, e não é recomendado usar a conta de root como conta pessoal, clicar em Continue:

Não instalamos dispositivos de áudio nessa máquina virtual, portanto, clicar em Continue:

Caso fosse necessário instalar algum software adicional nesse momento, bastaria clicar em Install. Como não é o caso, clicar em Finish:

A mensagem acima será exibida, basta clicar em OK e o sistema operacional será reiniciado.

Pronto! O sistema operacional está instalado!

Veremos no próximo artigo como realizar a primeira fase da correção dos pré-requisitos do sistema operacional para que possamos iniciar a instalação dos softwares Oracle necessários para a criação do nosso ambiente Oracle RAC.

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

Olá amigos!

Depois de uma longa pausa, continuamos hoje a série de artigos que aborda a arquitetura do Oracle Clusterware.

No post de hoje, veremos sobre as redes utilizadas no Oracle Clusterware: pública e privada.

  • Pública:
    • É nessa rede que o endereço IP virtual (VIP) será inicializado;
    • As conexões realizadas através de Oracle Net (Client Oracle) ou JDBC deverão apontar para os IP’s VIP, para que haja transparência no momento do failover;
    • Em caso de falha no nó 1, o VIP será inicializado no nó 2;
    • Enquanto houver pelo menos um servidor dentro do Cluster, todos os VIP’s estarão online neste servidor;
    • Quando o servidor que sofreu o problema inicializar a camada do Cluster, o CRS tentará subir o VIP nesse servidor, por 5 tentativas, e caso não consiga, outro servidor do Cluster ficará com esse VIP online;
    • Os IP’s VIP deverão ser registrados no DNS, pois os usuários devem se conectar o hostname do VIP ao invés do endereço IP. Isso é necessário pois quando ocorre o failover, o Listener do nó que permanecerá online, reencaminhará ao Client Oracle a string de conexão do nó 2 contendo a informação do hostname do VIP, e não do endereço IP, nesse momento, a estação de trabalho deverá ter a capacidade de resolver o nome no endereço IP. Seja através de DNS ou através do arquivo hosts na estação local.
  • Privada (InterConnect):
    • É a conexão privada entre os nós do cluster;
    • O uso de cabo cross-over é permitido tecnicamente, mas não suportado pela Oracle;
    • É a mídia do Cache-Fusion: global cache;
    • Deve ter baixa latência e alta largura de banda (gigabit ethernet é recomendado);
    • Deve ser utilizado em switchs gigabit;
    • Não deve estar no mesmo switch (ou VLAN) que a rede corporativa (pública);
    • Recomendado o uso de tecnologias para garantir maior disponibilidade. No Linux, há o bond networking, onde se utiliza 2 placas de rede físicas, com 2 switches, e é criada uma interface de rede virtual, para que a a rede InterConnect nunca fique indisponível, pois se ela ficar, o nó sofrerá reboot, já que ela faz parte da arquitetura do CSS. Essa tenologia de bonding networki é chamada de network teaming em outros sistemas operacionais.

Pessoal, essa foi a forma mais simples que eu tinha de explicar sobre as redes utilizadas no Clusterware. No próximo artigo, começaremos uma série que tratará sobre a administração do Clusterware.

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

Olá amigos!

Continuamos hoje a série de artigos que aborda a arquitetura do Oracle Clusterware.

No post de hoje, veremos sobre os principais arquivos na arquitetura do Oracle Clusterware: Voting Disk e OCR.

  • Voting Disk
    • Deve estar em storage compartilhado entre os nós: raw devices (até o Kernel 2.5.x), block devices, ou um cluster file system suportado;
    • Ele também é chamado de Disco de Quórum (Quorum Disk);
    • Pode ou não ser multiplexado: 1, 2 ou 3 cópias (é possível colocar mais de 3 cópias);
    • Sua utilidade ocorre quando há falha na rede de InterConnect, onde, todos os nós do Cluster precisam “votar” num lugar acessível a todos os nós (storage), o nó que tiver o menor número de votos como disponível (available) é eleito a sair do cluster (node eviction), e o processo de CSS faz o restart abrupto do nó;
    • O backup deve ser executado manualmente com o usuário root (em sistemas Unix/Linux), o utilitário dd é utilizado. Veremos na série sobre Administração do Clusterware como realizar essa tarefa;
    • Sempre que houver adição ou remoção de nós no cluster, é recomendado fazer o backup. Isso significa que um backup pode ser armazenado por muitos meses, que mesmo assim, continuará válido;
    • Se um nó perder acesso aos Voting Disks (problemas na fibra, controladora, etc.), o nó será reiniciado imediatamente, pois faz parte da arquitetura do CSS, e, sendo assim, qualquer componente da arquitetura do CSS que falhar, o servidor será reiniciado imediatemente.
    • A figura abaixo exemplifica o funcionamento do Voting Disk:

Na figura acima, podemos observar que num cluster de 3 nós, todos os nós se enxergam através do que chamamos de heart-beat (batida de coração), que é feita pela rede InterConnect. Essa informação é registrada no Voting Disk informando que todos os nós estão ativos no cluster.

Na figura acima, observamos que o nó 3 sofreu algum problema de conexão com a rede privada (InterConnect). O CSS realiza a votação, e o nó 1 “diz” que enxerga os nós 1 e 2; o nó 2 “diz” que enxerga os nós 1 e 2; e o nó 3 “diz” que enxerga somente o nó 3. Dessa forma, o nó 1 tem 2 votos como disponível, o nó 2 tem 2 votos como disponível, e o nó 3 tem apenas 1 voto com disponível. Logo, o nó 3 será evitado e será reiniciado imediatamente.

OK, o funcionamento do Voting Disk é fácil de ser entendido com um cluster de 3 ou mais nós. Mas, aí vem a pergunta, e no caso de um cluster de 2 nós, onde o nó 2 sofrerá o problema de conexão com a rede InterConnect. Como ficarão os votos dentro do Voting Disk? Ficarão da seguinte forma: o nó 1 “diz” que enxerga somente o nó 1, e o nó 2 “diz” que enxerga somente o nó 2. E aí, quem deverá sair do cluster temporariamente?

De acordo com o Metalink Note (RAC: Frequently Asked Questions [ID 220970.1]), o nó que será o “sobrevivente” no cluster será aquele que entrou primeiro no cluster, isto é, supondo que o nó 2 tenha entrado no cluster no dia 05/05/2010 às 0:01 e o nó 1 tenha entrado no cluster no dia 05/05/2010 às 0:02, o nó 2 será o nó sobrevivente no cluster, e o nó 1 será reiniciado.

  • OCR (Oracle Cluster Registry)
    • Deve estar em storage compartilhado entre os nós: raw devices (até o Kernel 2.5.x), block devices, ou um cluster file system suportado;
    • Ele também é chamado arquivo de controle (control file) do Cluster, sendo o centro das informações no cluster;
    • Pode ou não ser multiplexado: 1 ou 2 cópias;
    • Ele armazena informações como:
      • Lista dos nós, bancos de dados, instâncias, listeners, ASM, etc -> todos esses componentes são chamados de recursos;
      • Status esperado de cada um dos recursos do cluster;
    • A perda implica em parada do ambiente;
    • Os backups são executados automaticamente a cada 4 horas, e tem a seguinte política de retenção:
      • Armazena 1 backup a cada 4 horas no dia, totalizando 6 backups num intervalo de 24 horas;
      • Armazena 1 backup diário (sempre 1 backup do dia anterior, mas nunca o backup de 2 dias anteriores ou mais);
      • Armazena 1 backup semanal;
    • Além do backup automático, também é possível realizar um backup lógico.

Bom pessoal, como vocês puderam ver, esses arquivos são a espinha dorsal do cluster. Sem eles, o cluster não entra em funcionamento. Também foi possível observar que para um DBA perder um backup do OCR, tem que estar muito desatento mesmo, pois com backup a cada 4 horas, é praticamente “impossível” perder um backup desses.

Novamente, espero que esse post seja útil!

No próximo artigo, da semana que vem, veremos sobre as redes utilizadas no cluster: pública e privada (InterConnect).

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

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