Database
 sql >> Datenbank >  >> RDS >> Database

Untersuchen eines ORA 028513 DG4ODBC-Fehlers

Das Verbinden von Oracle mit SQL Server ist einer der häufigsten Anwendungsfälle für den Easysoft SQL Server ODBC-Treiber. Die Unterstützung dieser Kombination umfasst nicht nur die Unterstützung bei der Einrichtung unseres Treibers. Es bedeutet auch, bei der Lösung von Oracle-Konfigurationsproblemen zu helfen, die verhindern, dass Oracle Heterogeneous Services unseren Treiber lädt.

Kürzlich hat uns ein Kunde des SQL Server ODBC-Treibers den folgenden Fehler gemeldet:

ORA-28513: internal error in heterogeneous remote agent

Der Kunde konnte uns ein DG4ODBC-Trace-Protokoll zur Verfügung stellen, das uns zwei Dinge sagte:

  1. Die Oracle-Konfigurationsdateien (.ora) wurden korrekt eingerichtet. Wenn diese Dateien einen Fehler enthalten (z. B. eine fehlende oder überflüssige Klammer), wird kein DG4ODBC-Trace-Protokoll generiert.
  2. DG4ODBC hat nicht einmal versucht, den unixODBC-Treibermanager zu laden.

In Situationen wie diesen, in denen das Oracle DG4ODBC-Protokoll das Problem nicht identifiziert (es enthält normalerweise immer mehr Informationen als der von der Anwendung gemeldete ORA-NNNNN-Fehler) und die ODBC-Protokollierung noch nicht möglich ist, greifen wir nach strace oder truss . Zum Beispiel:

  1. Starten Sie zwei Shell-Sitzungen als Oracle-Benutzer.
  2. Beenden Sie in Shell 1 den Oracle-Listener.
  3. Starten Sie den Listener mit diesem Befehl:
    strace -f -o /tmp/easysoft.log -s 512 lsnrctl start

    – Oder –

    truss -wall -rall -o /tmp/easysoft.log lsnrctl start
  4. Starten Sie in Shell 2 SQL*PLus und führen Sie eine SQL-Anweisung für die DG4ODBC / SQL Server-Datenbankverbindung aus.
  5. Beenden Sie in Shell 2 den Oracle-Listener.

Das Tracing-Tool der Systembibliothek (truss im Fall des Kunden) hat die Ursache des Problems immer noch nicht offenbart.

Am Ende stellte sich heraus, dass der Kunde den ORA_NLS10 eingestellt hat Umgebungsvariable, und ein Nebeneffekt davon war, dass DG4ODBC nicht funktionierte. Da die Variable auf diesem Computer nicht gesetzt werden musste, war das Deaktivieren und Entfernen aus einer Profildatei die Lösung für das Problem des Kunden.