Criando um Banco de Dados RAC na Oracle Public Cloud

Neste artigo irei apresentar o passo a passo para a criação de uma Banco de Dados RAC na Oracle Cloud Database Service, como configurar e como conectar nesta base através do SQL Developer em alta disponibilidade.

Lembrando que a opção de "Real Application Clusters" está disponível apenas na criação de BDs com o pacote "Extreme Performance", conforme imagem abaixo:

Source: cloud.oracle.com

Primeiramente, é necessário certificar-se que a sua conta na nuvem contém livres ao menos:

  • 4 OCPUs
  • 30 GBs de RAM
  • 300 GBs de Disco
  • 2 IPs Públicos

Este passo a passo está dividido em 4 etapas:

  1. Criação do Oracle RAC Database.
  2. Testando acesso aos servidores.
  3. Liberação de acesso à porta 1521 para todos os IPs.
  4. Configuração de conexão utilizando o SQL Developer.
  5. Teste de Failover para uma conexão.

Então vamos começar.

1. Criação do Oracle RAC Database

Na Home Page do Oracle Database Cloud Service, clique em "Create Service".

Na tela que abrir, defina um nome de Serviço para o seu novo BD RAC.

O mais importante nesta tela e escolher em "Software Edition" o "Enterprise Edition - Extreme Performance", conforme já explicado no início deste artigo. Isto irá desbloquear o opção "Database Clustering with RAC" em "Database Type".

Após terminar de preencher avance para a próxima tela.

Defina um nome SID para o seu novo banco. Selecione em "Compute Shape" a opção "OC4". Crie um par de chave pública/privada e adicione o arquivo de chave pública em "SSH Public Key".

Em "Cloud Storage Container", preencha no formato "Storage-<domain>/<service name>", onde <domain> é o nome do seu domínio e <service name> é o nome do serviço definido na etapa anterior.

O usuário e senha do Storage Container são os mesmos de login na Oracle Cloud.

Por fim, verifique os dados digitados e proceda com a criação do seu novo Banco de Dados RAC.

Na página inicial do Oracle Database Cloud Service, o status ficará "In Progress" até que a instalação esteja concluída.

A criação no meu caso levou cerca de 1h20. Dependendo da localidade escolhida para o seu Oracle Public Cloud, esse tempo poderá ser menor.

Após finalizada a criação, clique no seu novo serviço para detalhar os nós que compõem o seu Cluster:

A tela abaixo abrirá, nela será possível visualizar os IP's Públicos de acesso aos servidores e a string TNS de conexão ao servidor:

2. Testando acesso aos servidores

Agora que temos os servidores criados, é preciso testar a conexão com ambos os nós e verificar se todos os serviços realmente estão de pé.

Conectando no primeiro nó, alpharac1:

Conectando no segundo nó, alpharac2:

Ótimo, a próxima etapa será se conectar ao Banco de Dados.

3. Liberação de acesso à porta 1521 para todos os IPs

Por padrão, após a criação de um novo serviço todas as portas do servidor são bloqueadas para acessos externos, exceto a porta 22 - SSH.

Para podermos ter acesso ao servidor criado pela porta 1521, é preciso fazer a liberação do scan listener para aceitar conexões de entrada de qualquer IP Público.

Acesse o menu de "Oracle Compute Cloud Service" conforme orientado abaixo:

Na página inicial que se abrir, vá até a aba Network:

Note que já existe uma regra criada para a liberação do "Scan Listener" para a internet pública. No entanto, esta regra vem desabilitada.

Clique nos três traços a direita da regra e selecione "Update Security Rule":

Um pop-up surgirá e nele é possível alterar o status da regra para "Enabled". Em seguida clique em "Update":

Por fim, confira se a regra de rede foi realmente atualizada:

OBS: Também seria possível utilizar túnel SSH reverso para conexão sem a necessidade de liberação de portas.

4. Configuração de conexão utilizando o SQL Developer

Agora é hora de finalmente testarmos o acesso ao servidor.

Primeiro vamos testar a conexão a apenas um servidor. Abra o SQL Developer e preencha com o IP Públic do nó 1, nome do serviço e usuário e senha do SYS definido durante a criação do Banco de Dados RAC.

Ao clicar em Testar, certifique-se que a conexão foi estabelecida com sucesso:

No entanto, nosso objetivo com um servidor RAC é usufruir da alta disponibilidade e não permitir que a queda em um dos nós gere falha na conexão de uma aplicação.

Para isso, vamos criar uma conexão utilizando o "Transparent Application Failover" (ou TAF) onde o Oracle Client, em caso de perda de conexão com um dos listener, instruirá a Oracle Net a continuar a conexão de modo transparente em um listener diferente como se o link original nunca tivesse falhado.

Primeiramente, precisaremos anotar a própria "Connect String" fornecida pelo serviço criado. No meu caso, ela é:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=140.86.35.171)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=140.86.35.226)(PORT=1521))(LOAD_BALANCE=ON)(FAILOVER=ON))
(CONNECT_DATA=(SERVICE_NAME=PDB1.gse00002218.oraclecloud.internal)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC))))

No SQL Developer, ao criar uma conexão selecione "Avançado" e preencha com a URL JDBC do seu serviço:

OBS: Por padrão, o Oracle Client que vêm com o SQL Developer não possui os drivers que permitem que o TAF funcione. Portanto, caso ainda não tenha sido feito, será necessário baixar um Oracle Client que venha com OCI e especificá-lo em "Preferências -> Banco de Dados -> Avançado -> Usar Oracle Client"

5. Teste de Failover para uma conexão

Para testarmos que o TAF está funcionando adequadamente, vamos testar forçando um Failover.

Primeiro vamos verificar a qual servidor estamos conectados:

Em seguida, vamos finalizar o serviço de Banco de Dados na instância que estamos conectados.

Para isto, conecte-se ao servidor e finalize o serviço executando:

$ srvctl stop instance -d orcl -i orcl2 -o abort

OBS: Adicione "-o abort" para forçar um failover. Caso deseje apenas parar a instância, remova esta cláusula.

Por fim, ainda conectado no SQL Developer, execute novamente a mesma instrução SQL que retornará a instância conectada e note que ele não apresentará qualquer erro ou falha de conexão, apenas o resultado será a outra instância:

Tudo funcionando conforme esperado.

Portanto, neste artigo vimos como podemos criar um BD RAC em menos de 2 horas com alta disponibilidade homologada e funcionando conforme esperado.

Deixe um comentário

Seu e-mail não será publicado.