sábado, 8 de fevereiro de 2014

Dataguard - Parte 4 - Criando o TAF (Transparent Application Failover)

Esta é a utima parte sobre a configuração do ambiente, para este post tirei como base a nota da Oracle, How To Configure Client Failover For Dataguard Connections Using Database Services (Doc ID 1429223.1), mas é claro, alguns ajustes foram necessários.

Num ambiente replicado algumas vezes temos a necessidade de realizar a troca de papel (role) entre as base de dados (prod/stby), esta parte final visa criar um servico com que facilite o lado do cliente quando essa troca é feita, ela é realizada através de features como Oracle Restart e Dataguard Broker, onde é possivel identificar a troca de role entre as bases e iniciar servicos. A outra parte da configuração é feita através de de configuração dos arquivos de rede.

Ambiente:

Apenas para relembrar o ambiente que foi criado anteriormente, temos configurado conforme a seguir:
Dataguard - Parte 1 - Infra-estrutura


arametroProducaoStandby
Hostnameos-indaia-orcl-prodos-indaia-orcl-stb
ip192.168.1.61192.168.1.62
SOOracle Linux 5.7Oracle Linux 5.7
Oracle Version11.2.0.311.2.0.3
DB Nameorclorcl
Instance nameorclorclstby
db_unique_nameorclorclstby
service_nameorclorclstby
Listener Namelistener_orcllistener_orclstby
Listener Port15231523
service_names_orcl_prds_orcl_stby

Pre-requisitos

O Oracle Clusterware deve estar instalado em ambos os servidores, produção e standby.

1. Criando o Serviço base em regra (role-based service):

Como oracle, executar os comandos a seguir:

Produção:
srvctl add service -d orcl -s s_orcl_prd -l PRIMARY -q true -e select -m basic -z 10 -w 10

Standby:
srvctl add service -d orclstby -s s_orcl_prd -l PRIMARY -q true -e select -m basic -z 10 -w 10

Legenda:

-d = Database Name
-s = Service Name ( Será utilizado no tnsnames)
-l = Role of the service
-q = HA notifications
-e = Failover type
-m = Failover method
-z = Failover retries
-w = Failover delay

Para completa referencia pode ser executado : srvctl add service -help.

2. Iniciando o Servico em Produção:

Este servico deve ser iniciado somente em produção, o banco de standby este serviço não é iniciado, caso houver uma troca de role entre os DBs o Oracle Restart e Notification Service irão se encarregar de iniciar este serviço.

srvctl start service -d orcl -s s_orcl_prd

3. Criando as entradas de rede (Tnsnames.ora)

Esta entrada no tnsnames deve ser criada em ambos banco de dados:
Note que há duas entradas para direcionar para qual servidor deve ser conectar, como a conexao é baseada em servico, de acordo com a regra do serviço refem configurado o failover é a nivel de select e é feita de 1 a 10 tentativas com intervalos de 10 segundos, até estabelecer a nova conexão ou até o timeout.

orcl_prd =
  (DESCRIPTION =
     (ADDRESS_LIST =
       (FAILOVER = ON)
       (LOAD_BALANCE = OFF)
       (ADDRESS = (PROTOCOL = TCP)(HOST = os-indaia-orcl-prod)(PORT = 1523))
       (ADDRESS = (PROTOCOL = TCP)(HOST = os-indaia-orcl-stb)(PORT = 1523))
     )
     (CONNECT_DATA =
       (SERVICE_NAME = s_orcl_prd)
     )
  )

Menu Inicial: Dataguard

Nenhum comentário: