Имал съм подобни проблеми в миналото. След това стигнах до заключението, че по същество db връзките на Oracle са "счупени" за всичко друго, но не и за прости SQL типове (особено UDT, CLOBS може да има проблеми, XMLType също може). Ако успеете да накарате решението за OID да работи, тогава успех на вас.
Решението, към което прибягнах, беше да използвам Java Stored процедура, вместо DB Link.
Характеристики на съхранената процедура на Java:
- Може да върне „богат набор от типове“, почти всички сложни типове (UDT, таблици/масиви/варианти) вижте Онлайн документация на Oracle за детайли. Oracle се справя много по-добре с маршалинга на сложни (или богати) типове от java, отколкото от DBLink.
- Съхранената Java може да придобие „връзката по подразбиране“ (изпълнява се в същата сесия като SQL връзката към db – няма проблеми с удостоверяването).
- Съхранената Java извиква PL/SQL процедурата на отдалечената DB, а Java JDBC слоят извършва маршалинга от отдалечената DB.
- Съхранената Java пакетира резултата и го връща на SQL или PL/SQL слоя.
Това е малко работа, но ако имате малко Java, трябва да можете да „изрежете и поставите“ решение заедно от документацията и примера на Oracle.
Надявам се това да помогне.