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

Oracle-SQL-Typen über dblink

Ich hatte in der Vergangenheit ähnliche Probleme. Dann kam ich zu dem Schluss, dass die DB-Links von Oracle grundsätzlich für alles andere als einfache SQL-Typen "kaputt" sind (insbesondere UDTs, CLOBS können Probleme haben, XMLType möglicherweise auch). Wenn Sie die OID-Lösung zum Laufen bringen können, dann viel Glück für Sie.

Die Lösung, auf die ich zurückgriff, bestand darin, anstelle des DB-Links eine gespeicherte Java-Prozedur zu verwenden.

Merkmale der gespeicherten Java-Prozedur:

  1. Kann einen "reichen Satz von Typen" zurückgeben, fast alle komplexen Typen (UDTs, Tabellen/Arrays/Varrays) siehe Oracle-Onlinedokumentation für Details. Oracle kann komplexe (oder reichhaltige) Typen viel besser aus Java marshallen als aus einem DBLink.
  2. Gespeichertes Java kann die "Standardverbindung" erwerben (läuft in derselben Sitzung wie die SQL-Verbindung zur Datenbank - keine Authentifizierungsprobleme).
  3. Gespeichertes Java ruft die PL/SQL-Prozedur in der Remote-DB auf, und die Java-JDBC-Schicht übernimmt das Marshalling von der Remote-DB.
  4. Gespeichertes Java verpackt das Ergebnis und gibt die Ergebnisse an die SQL- oder PL/SQL-Schicht zurück.

Es ist ein bisschen Arbeit, aber wenn Sie ein bisschen Java haben, sollten Sie in der Lage sein, eine Lösung aus der Oracle-Dokumentation und dem Beispiel "auszuschneiden und einzufügen".

Ich hoffe, das hilft.