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:
- 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.
- Gespeichertes Java kann die "Standardverbindung" erwerben (läuft in derselben Sitzung wie die SQL-Verbindung zur Datenbank - keine Authentifizierungsprobleme).
- Gespeichertes Java ruft die PL/SQL-Prozedur in der Remote-DB auf, und die Java-JDBC-Schicht übernimmt das Marshalling von der Remote-DB.
- 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.