Jag har haft liknande problem tidigare. Sedan kom jag till slutsatsen att i grunden är Oracles db-länkar "trasiga" för allt annat än enkla SQL-typer (speciellt UDT, CLOBS kan ha problem, XMLType kan också). Om du kan få OID-lösningen att fungera så lycka till.
Lösningen jag tog till var att använda en Java Stored-procedur istället för DB-länken.
Egenskaper för den lagrade Java-proceduren:
- Kan returnera en "rik uppsättning typer", nästan alla komplexa typer (UDT, tabeller/arrayer/varrays) se Oracle onlinedokumentation för detaljer. Oracle gör ett mycket bättre jobb med att sortera komplexa (eller rika) typer från java än från en DBLink.
- Lagrad Java kan förvärva "standardanslutningen" (körs i samma session som SQL-anslutningen till db - inga autentiseringsproblem).
- Lagrad Java anropar PL/SQL-proc på fjärr-DB, och java JDBC-lagret gör marshaling från fjärr-DB.
- Lagrad Java paketerar resultatet och returnerar resultaten till SQL- eller PL/SQL-lagret.
Det är lite jobb, men om du har lite Java bör du kunna "klippa ut och klistra" ihop en lösning från Oracle-dokumentationen och provet.
Jag hoppas att detta hjälper.