Ho avuto problemi simili in passato. Quindi sono giunto alla conclusione che fondamentalmente i collegamenti db di Oracle sono "interrotti" per tutto tranne che per i semplici tipi SQL (in particolare UDT, CLOBS potrebbe avere problemi, anche XMLType). Se riesci a far funzionare la soluzione OID, buona fortuna a te.
La soluzione a cui ho fatto ricorso è stata quella di utilizzare una procedura Java Stored, invece del DB Link.
Caratteristiche della stored procedure Java:
- Può restituire un "ricco set di tipi", quasi tutti i tipi complessi (UDT, tabelle/array/varray) vedere Documentazione online Oracle per dettagli. Oracle fa un lavoro molto migliore nel marshalling di tipi complessi (o ricchi) da Java, che da un DBLink.
- Stored Java può acquisire la "connessione predefinita" (viene eseguita nella stessa sessione della connessione SQL al db - nessun problema di autenticazione).
- Java memorizzato chiama il proc PL/SQL sul DB remoto e il livello JDBC java esegue il marshalling dal DB remoto.
- Il Java memorizzato confeziona il risultato e restituisce i risultati al livello SQL o PL/SQL.
È un po' di lavoro, ma se hai un po' di java, dovresti essere in grado di "tagliare e incollare" una soluzione insieme dalla documentazione e dall'esempio di Oracle.
Spero che questo aiuti.