Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Ajustando o Oracle DG40DBC


Recentemente, um cliente compartilhou uma solução alternativa que resolveu um problema que ocorreu ao usar nosso driver ODBC do SQL Server para conectar o Oracle ao SQL Server. O erro que o cliente estava recebendo era:
DELETE FROM mytable@MYLINKEDDATABASE
WHERE MyCol = 'MyValue';

17:01:01 [DELETE - 0 row(s), 0.000 secs] [Error Code: 2070, SQL State: 42000]
ORA-02070: database MYLINKEDDATABASE does not support some function in this context

e isso foi resolvido por:
SQL> select fds_class_name from HS_FDS_CLASS;
ODBC11.2.0.2.0_0008
exec dbms_hs.replace_class_caps('ODBC11.2.0.2.0_0008', 564,'ODBC11.2.0.2.0_0008',564,
	                                                                 8191,NULL,1);

PL/SQL procedure successfully completed.

SQL> commit;

Commit complete

No Oracle, "SELECT FDS_CLASS_NAME FROM HS_FDS_CLASS" retornará uma string que identifica sua versão DG4ODBC. Por exemplo.:
ODBC11.2.0.2.0_0008

Executando esta consulta:
SELECT * FROM HS_CLASS_CAPS WHERE FDS_CLASS_NAME ='ODBC11.2.0.2.0_0008';

retorna um número de "capacidades" que mostram como o DG4ODBC está configurado para se comportar.

No exemplo mostrado anteriormente, a coluna em que o cliente era um NVARCHAR tipo. Sob a direção do suporte da Oracle, o cliente altera o comportamento do DG4ODBC em relação a esse tipo de dados.

O cliente encontrou o campo relevante em HS_CLASS_CAPS :
564 TO_NCHAR(op1) 0

e alterei com o pacote Oracle, DBMS_HS.ALTER_CLASS_CAPS .

Observe que o que os vários recursos do DG4ODBC fazem não são, ao que parece, documentados em nenhum lugar público. Este blog não pode, portanto, fornecer orientações específicas sobre como usá-los para resolver um problema específico. Em vez disso, o blog é fornecido para informá-lo de que você tem outra ferramenta à sua disposição, se editar parâmetros no arquivo de configuração DG4ODBC, init.ora não resolver nenhum problema que você esteja tendo com sua conectividade DG4ODBC.

Veja também

  • Exclua ou atualize a instrução usando TG4MSQL 10.2 ou DG4ODBC 11.2 Referenciando o campo Nvarchar na cláusula Where dá erro ORA-2070
  • Re:Problema com o Oracle Database Gateway para ODBC e Unicode