Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Feinabstimmung von Oracle DG40DBC

Kürzlich teilte ein Kunde eine Problemumgehung mit, die ein Problem löste, das bei der Verwendung unseres SQL Server-ODBC-Treibers zur Verbindung von Oracle mit SQL Server auftrat. Der Fehler, den der Kunde erhielt, war:

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

und dies wurde gelöst durch:

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

In Oracle gibt "SELECT FDS_CLASS_NAME FROM HS_FDS_CLASS" eine Zeichenfolge zurück, die Ihre DG4ODBC-Version identifiziert. Beispiel:

ODBC11.2.0.2.0_0008

Diese Abfrage ausführen:

SELECT * FROM HS_CLASS_CAPS WHERE FDS_CLASS_NAME ='ODBC11.2.0.2.0_0008';

gibt eine Reihe von "Fähigkeiten" zurück, die zeigen, wie DG4ODBC konfiguriert ist, um sich zu verhalten.

In dem zuvor gezeigten Beispiel war die Spalte „Kunde“ ein NVARCHAR Typ. Unter der Anleitung des Oracle-Supports ändert der Kunde das Verhalten von DG4ODBC in Bezug auf diesen Datentyp.

Der Kunde hat das relevante Feld in HS_CLASS_CAPS gefunden :

564 TO_NCHAR(op1) 0

und es mit dem Oracle-Paket DBMS_HS.ALTER_CLASS_CAPS geändert .

Beachten Sie, dass die verschiedenen Fähigkeiten von DG4ODBC anscheinend nirgendwo öffentlich dokumentiert sind. Dieser Blog kann daher keine spezifische Anleitung dazu geben, wie sie verwendet werden können, um ein bestimmtes Problem zu lösen. Stattdessen wird der Blog bereitgestellt, um Sie darauf aufmerksam zu machen, dass Ihnen ein anderes Tool zur Verfügung steht. Wenn Sie Parameter in der DG4ODBC-Konfigurationsdatei bearbeiten, löst init.ora keine Probleme, die Sie mit Ihrer DG4ODBC-Konnektivität haben.

Siehe auch

  • Eine Anweisung zum Löschen oder Aktualisieren mit TG4MSQL 10.2 oder DG4ODBC 11.2, die auf das Nvarchar-Feld in der Where-Klausel verweist, gibt den ORA-2070-Fehler aus
  • Re:Problem mit Oracle Database Gateway für ODBC und Unicode