Conectar o Oracle ao SQL Server é um dos casos de uso mais comuns para o driver ODBC do Easysoft SQL Server. Apoiar esta combinação não envolve apenas fornecer assistência na configuração do nosso driver. Isso também significa ajudar a resolver problemas de configuração do Oracle que impedem que o Oracle Heterogeneous Services chegue ao ponto de carregar nosso driver.
Recentemente, um cliente do driver ODBC do SQL Server relatou o seguinte erro para nós:
ORA-28513: internal error in heterogeneous remote agent
O cliente conseguiu nos fornecer um log de rastreamento DG4ODBC, que nos disse duas coisas:
- Os arquivos de configuração do Oracle (.ora) foram configurados corretamente. Se esses arquivos contiverem um erro (por exemplo, um colchete ausente ou estranho), nenhum log de rastreamento DG4ODBC será gerado.
- DG4ODBC nem estava tentando carregar o gerenciador de driver unixODBC.
Em situações como essas em que o log do Oracle DG4ODBC não identifica o problema (normalmente sempre conterá mais informações do que o erro ORA-NNNNN relatado pelo aplicativo) e o log de ODBC ainda não é possível, alcançamos
strace ou treliça
. Por exemplo:
- Inicie duas sessões de shell como usuário Oracle.
- No shell 1, pare o ouvinte Oracle.
- Inicie o ouvinte com este comando:
strace -f -o /tmp/easysoft.log -s 512 lsnrctl start
-Ou-
truss -wall -rall -o /tmp/easysoft.log lsnrctl start
- No shell 2, inicie o SQL*PLus e execute uma instrução SQL no link do banco de dados DG4ODBC/SQL Server.
- No shell 2, pare o ouvinte Oracle.
No entanto, a ferramenta de rastreamento da biblioteca do sistema (truss
no caso do cliente) ainda não revelou a causa do problema.
No final, descobriu-se que o cliente estava configurando o ORA_NLS10
variável de ambiente, e um efeito colateral de fazer isso foi impedir que o DG4ODBC funcionasse. Como a variável não precisava ser configurada nesta máquina, desativá-la e removê-la de um arquivo de perfil foi a solução para o problema do cliente.