Já tive problemas semelhantes no passado. Então cheguei à conclusão de que fundamentalmente os links db da Oracle estão "quebrados" para qualquer coisa, menos tipos SQL simples (especialmente UDT's, CLOBS podem ter problemas, XMLType também). Se você conseguir fazer a solução OID funcionar, boa sorte para você.
A solução a que recorri foi usar um procedimento Java Stored, em vez do DB Link.
Características do Procedimento Armazenado Java:
- Pode retornar um "conjunto rico de tipos", praticamente todos os tipos complexos (UDTs, tables/arrays/varrays) veja Documentação on-line do Oracle para detalhes. O Oracle faz um trabalho muito melhor de empacotamento de tipos complexos (ou ricos) de java do que de um DBLink.
- O Java armazenado pode adquirir a "conexão padrão" (executa na mesma sessão que a conexão SQL com o banco de dados - sem problemas de autenticação).
- O Java armazenado chama o proc PL/SQL no banco de dados remoto, e a camada java JDBC faz o marshaling do banco de dados remoto.
- O Java armazenado empacota o resultado e retorna os resultados para a camada SQL ou PL/SQL.
É um pouco trabalhoso, mas se você tiver um pouco de java, poderá "recortar e colar" uma solução a partir da documentação e da amostra do Oracle.
Eu espero que isso ajude.