Problema de comunicação com Oracle Adapter (ODBC)

Pessoas,
Há muito tempo estou inscrito neste blog, mas como puderam reparar nunca havia postado nada. Muitas vezes pela total falta de tempo para isto.
Pretendo realizar a partir de hoje, alguns blogs à respeito de situações nada comuns que temos como consultores de BizTalk.
Como atuo na parte de consultoria de  BizTalk, além do desenvolvimento de soluções com este produto, encontro diversas situações que pelo tempo de experiência que eu tenho no produto consigo resolver, mas algumas situações são muito difíceis de resolver, principalmente quando falta documentação à respeito.
Na semana retrasada, peguei uma situação em um cliente da ITGROUP, que omitirei o nome por razões óbvias, com o adaptador do Oracle antigo (modelo ODBC).
Este adaptador é realmente muito antigo, ele existe desde o BizTalk 2004 e têm vários problemas. Por algum motivo este cliente não fez a atualização do código para utilizar o adaptador WCF LOB Adapter apesar deste cliente já ter o BizTalk 2006 R2 instalado em seu ambiente de produção.
O que ocorreu, foi que simplesmente as máquinas do ambiente de produção deste cliente não conseguiam mais estabelecer nenhum tipo de comunicação com o Oracle via o adaptador. A única coisa que aparecia no Event Viewer era “RuntimeAgent: Error trapped in constructor: No connection could be made because the target machine actively refused it”.
Tentamos de tudo, ping, telnet, SQL Plus, etc… Todos os testes de comunicação funcionaram, mas o adaptador não conseguia se comunicar com o Oracle.
Achamos um KB no site da Microsoft http://support.microsoft.com/kb/923650 que detalha um procedimento de alteração do registro que poderia ser a causa do problema. Também fizemos modificações na pasta do driver do Oracle conforme explicações obtidas em fórums e nada resolvia o problema.
Tívemos que abrir um chamado na Microsoft (Premier) para ajudar-nos à solucionar este mistério.
Depois de algumas horas com o engenheiro da Microsoft, o mesmo, através de alguma documentação interna da Microsoft pediu que fosse adicionada uma chave no registro em:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/BizTalkAdapter
O nome da chave é StartAgentSleep (DWORD) e o valor pedido pelo engenheiro foi 5000 (decimal).
Esta chave faz com que haja um delay na ativação do componente RemotingService.exe utilizado pelo adaptador e garante que este componente suba antes da tentativa de comunicação com o Oracle pelo adaptador. O valor 5000 (milisegundos) são para alterar o valor padrão de 1000 (milisegundos).
Segue abaixo o texto extraído da explicação do engenheiro da Microsoft:
“BTS communicates with the runtimeagent through .Net remoting. The problem is that the default time sometime is not enough for the runtimeagent.exe to come online. This is why the error says the failure is in the constructor. Since runtimeagent could not come online, BTS throws the “No connection can be made….” error.
The registry value is for BTS to wait sometime for runtimeagent to come online before determining it is bad.”
Depois desta alteração tivemos todas as comunicações pendentes com o Oracle foram resolvidas e não tivemos mais nenhum problema.
Espero que tenham gostado desta minha primeira participação no blog e caso alguém por aí ainda utilize este adaptador seja beneficiado por isto.
Até a próxima.

Seja o primeiro a comentar ;)

Postar um comentário

BizTalk 360

Visitas

Arquivo do blog