Configurando Transações Two-phase Commit Distribuídas com o RAC Oracle
As configurações de Real Application Cluster (RAC) possuem um problema inerente com o gerenciador de transações quando o Oracle tenta recuperar transações distribuídas de duas fases que abrangem sobre vários nós do Oracle RAC. 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 esse problema.
Sobre esta Tarefa
ORA- 24756: transaction does not exist
Se esse 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.ORA-01591 lock held by in-doubt distributed transaction
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 você pode 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ó. Essa 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
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.