Tempo aproximado para leitura: 00:03:00 min
Ocorrência
A partir da versão 12.1.18 os produtos da linha RM passarão a utilizar o direct mode do provider de conexão utilizado para bases de dados Oracle.
Com este cenário o erro abaixo poderá ocorrer devido a configuração do alias de conexão a base de dados:
O direct mode implementa a conexão da aplicação RM sem a necessidade de utilizar dll's, provider ou outros artefatos de terceiros para conexão a base Oracle. Antes da implementação, utilizávamos a OCI (oracle call interface) para conexão ao banco de dados Oracle.
Causa
Embora seja uma melhoria no funcionamento da aplicação, esta configuração poderá provocar o erro acima nos seguintes cenários:
- Utilização de conexão via tnsnames do client Oracle
- Utilização de servidor de banco de dados Oracle RAC
A mudança implementada no RM foi habilitada através de tags no arquivo de configuração do rm.host RM.Host.Service.exe.config, RM.Host.exe.config e RM.Host.JobRunner.exe.config, sendo esta tag oculta no config padrão da instalação e definida como true.
<add key="USEDEVARTDIRECT" value="true" />
Esta configuração ocasionará o erro nos casos em que a forma de conexão ao oracle não for direta, exemplo (host/sid) ou nos casos em que o servidor Oracle esteja em RAC (Real Application Cluster).
Ambiente
Framework - Framework (Linha RM) - Banco de Dados - A partir da versão 12.1.18
Solução
Para solução do problema os seguintes passos poderão ser seguidos:
1. Caso não utilize Oracle RAC
Recomendamos aos clientes que não utilizam Oracle RAC que mantenham a configuração do direct mode como true, pois além dos ganhos relativos a instalação, manutenção e administração de clients Oracle nas máquinas em que o produto TOTVS está instalado, teremos outros ganhos em potencial, uma vez que neste modelo a aplicação trabalhará diretamente com o Oracle através do protocolo TCP/IP, sem o envolvimento do client do Oracle.
Para a não ocorrência do erro acima você deverá realizar o seguinte procedimento.
No alias manager informar a conexão direta ao banco de dados ao qual deseja se conectar. Para isso, você deverá informar o nome ou ip do host onde o banco de dados se encontra instalado / barra o SID (Service Identifier do Oracle), que é o nome do serviço Oracle. Exemplos:
- 10.31.0.159/orcl
- serverbd/orcl
- 10.31.0.159:1521/orcl
Caso não utilize a porta padrão 1521, será necessário informá-la, conforme exemplo: BHD050101104:1527/exemplo12116
2. Caso utilize Oracle RAC
O modo direct não é compatível com o Oracle RAC. Sendo assim, clientes que utilizam o Oracle RAC poderão no momento da instalação do RM marcar o flag utilização do Oracle RAC que automaticamente irá setar a tag USEDEVARTDIRECT para false conforme imagem abaixo. Exemplo:
Caso não tenha marcado a opção durante a instalação, basta incluir a tag abaixo nos arquivos de configuração RM.Host.Service.exe.config, RM.Host.exe.config e RM.Host.JobRunner.exe.config conforme abaixo:
<add key="USEDEVARTDIRECT" value="false" />
Para verificar se a instancia é ou não Oracle RAC, você poderá executar a seguinte consulta:
select name, value from v$parameter where name='cluster_database';
Caso o campo VALUE retorne TRUE a instancia é Oracle RAC.
Importante
O client do Oracle continua sendo necessário para acesso aos executáveis Delphi que ainda utilizam o BDE (Borland Database Engine) para conexão com o banco.
Saiba mais
Para mais detalhes acesse nossos documentos sobre RM - BD - Dúvida "Teste de conectividade banco de dados Oracle" e Vantagens em utilizar Direct mode (Oracle)
0 Comentários