Configurando Transações Two-phase Commit Distribuídas com o RAC Oracle

As configurações RAC (Real Application Cluster) para Oracle 10g têm um problema de herança com o gerenciador de transação quando o Oracle tenta recuperar transações two-phase commit distribuídas que se espalham por vários nós do RAC Oracle. Pode ocorrer um problema quando um nó falha e o Oracle abre os outros nós ativos para o negócio antes que o RAC Oracle conclua a ação de recuperação necessária para o nó que falhou. A capacidade de o servidor de aplicativo manter a afinidade da transação permite que você resolva este problema.

Sobre Esta Tarefa

Erros podem ocorrer quando o processo de recuperação tenta confirmar ou recuperar uma ramificação da transação por meio de um nó do RAC anteriormente ativo mas que falha posteriormente. O gerenciador de transação receberia a seguinte exceção:
ORA- 24756: A transação não existe
Se este erro fosse encontrado, o administrador do banco de dados Oracle poderia precisar resolver manualmente a transação incerta forçando um processo de recuperação ou confirmação. Se você não quisesse uma intervenção manual, no entanto, poderia configurar uma estratégia automática e transparente para a recuperação da transação.
Se a transação incerta não fosse resolvida, todas as transações subsequentes receberiam a seguinte exceção:
ORA-01591 Bloqueio mantido pela transação incerta distribuída
O resultado é que as partes do banco de dados não poderão ser usadas.

A chave para uma estratégia de recuperação transparente é eliminar a possibilidade de uma transação global distribuir mais de uma ramificação da transação em vários nós RAC. Uma ramificação da transação corresponde a uma conexão com o banco de dados que está relacionada a uma transação global. Se todas as conexões em uma transação global two-phase commit originarem do mesmo nó, problemas de recuperação da transação deverão surgir. Configure um RAC Oracle com o servidor de aplicativo para evitar erros com as transações two-phase.

O servidor de aplicativos mantém a afinidade da transação para conexões recebidas e é possível beneficiar-se deste recurso para configurar a recuperação automática para o RAC Oracle com transações two-phase commit. Se você implementar esta configuração, todas as conexões de um determinado servidor de aplicativos serão recebidas do mesmo nó do Oracle e as conexões encerrarão nesse mesmo nó. Esta configuração evitará situações nas quais as transações distribuem vários nós e você não deverá ter problemas de recuperação se um ou mais nós do Oracle ficarem inativos.

Procedimento

Resultados

Se você configurou uma estratégia de recuperação automática, o serviço DTP iniciará automaticamente na instância preferida. No entanto, se o banco de dados for reiniciado, o serviço DTP não iniciará automaticamente. É possível iniciar o serviço DTP usando este comando:
srvctl start service -d  -s
Se um nó RAC parar de funcionar, o Oracle não fará failover do serviço DTP até que a limpeza e a recuperação do RAC Oracle estejam concluídas. Mesmo que os nós do Oracle tenham backup, o serviço DTP Oracle não retornará para o nó RAC recentemente reiniciado. Ao contrário, você terá de mover o serviço manualmente para o nó RAC reiniciado.

Quando você configura o DTP no serviço Oracle, transfere o balanceamento de carga do provedor JDBC Oracle para o servidor de aplicativos. A carga de trabalho é distribuída pelo servidor de aplicativos e não pelo Oracle, por isso que você cria serviços que não implementam o balanceamento de carga e usam apenas um nó primário. Essa configuração impede situações nas quais os processos de transação distribuem vários nós RAC e suavizam problemas de recuperação que podem surgir quando um ou mais nós RAC falham.


Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tdat_oracleractwophase
Nome do arquivo: tdat_oracleractwophase.html