Jeg har tidligere haft lignende problemer. Så kom jeg til den konklusion, at grundlæggende er Oracles db-links "brudt" for alt andet end simple SQL-typer (især UDT'er, CLOBS kan have problemer, XMLType kan også). Hvis du kan få OID-løsningen til at virke, så held og lykke til dig.
Løsningen jeg tyede til var at bruge en Java Stored procedure i stedet for DB Link.
Karakteristika for Java Stored Procedure:
- Kan returnere et "rigt sæt af typer", stort set alle de komplekse typer (UDT'er, tabeller/arrays/varrays) se Oracle online dokumentation for detaljer. Oracle gør et meget bedre stykke arbejde med at samle komplekse (eller rige) typer fra java end fra en DBLink.
- Lagret Java kan erhverve "standardforbindelsen" (kører i samme session som SQL-forbindelsen til db'en - ingen godkendelsesproblemer).
- Lagret Java kalder PL/SQL-proc'en på den eksterne DB, og java JDBC-laget foretager marshaling fra den eksterne DB.
- Lagret Java pakker resultatet og returnerer resultaterne til SQL- eller PL/SQL-laget.
Det er lidt arbejde, men hvis du har en smule java, burde du være i stand til at "klippe og indsætte" en løsning sammen fra Oracle-dokumentationen og prøven.
Jeg håber, at dette hjælper.