Oracle
 sql >> Base de données >  >> RDS >> Oracle

Types SQL Oracle sur dblink

J'ai eu des problèmes similaires dans le passé. Ensuite, je suis arrivé à la conclusion que fondamentalement, les liens db d'Oracle sont "cassés" pour tout sauf les types SQL simples (en particulier les UDT, CLOBS peuvent avoir des problèmes, XMLType peut aussi). Si vous parvenez à faire fonctionner la solution OID, bonne chance à vous.

La solution à laquelle j'ai eu recours était d'utiliser une procédure Java Stored, au lieu de DB Link.

Caractéristiques de la procédure stockée Java :

  1. Peut renvoyer un "ensemble riche de types", à peu près tous les types complexes (UDT, tables/tableaux/varrays) voir Documentation en ligne Oracle pour plus de détails. Oracle réussit bien mieux à rassembler les types complexes (ou riches) à partir de Java qu'à partir d'un DBLink.
  2. Le Java stocké peut acquérir la "connexion par défaut" (s'exécute dans la même session que la connexion SQL à la base de données - aucun problème d'authentification).
  3. Le Java stocké appelle la procédure PL/SQL sur la base de données distante, et la couche Java JDBC effectue le marshaling à partir de la base de données distante.
  4. Java stocké regroupe le résultat et renvoie les résultats à la couche SQL ou PL/SQL.

C'est un peu de travail, mais si vous avez un peu de Java, vous devriez pouvoir "couper et coller" une solution ensemble à partir de la documentation et de l'exemple d'Oracle.

J'espère que cela vous aidera.