2010-08-29 7 views

Répondre

5

La réponse est correcte dans un certain contexte, pour les instructions select simples sur un lien de DB, vous obtiendrez cette erreur:

ORA-22992: cannot use LOB locators selected from remote tables.

du manuel d'erreurs:

Cause: A remote LOB column cannot be referenced.
Action: Remove references to LOBs in remote tables.

J'ai aussi Nous avons eu du mal à trouver une documentation définitive à ce sujet ... mais nous avons juste rencontré le même problème dans notre entrepôt de données. Cependant, il existe plusieurs solutions de rechange, par exemple pulling the data over or creating a view.

+0

merci pour le lien! – Moeb

1

J'ai eu le même problème hier. C'est ma solution: créer une vue de romote sur la table de romote, quand vient les colonnes CLOB, utilisez to_char(), comme to_char (col2). Vous pouvez ensuite sélectionner des données dans la vue. Ce n'est peut-être pas une bonne solution, mais cela fonctionne.

1

Si les deux régimes à prestations déterminées sont dans la même instance Oracle, vous pouvez utiliser la solution suivante:

select (select <columnName> from dual) <columnName> from <table>@<link>

Cela vous ramènera la même chose que si vous accéder à une colonne LOB locale.

+0

pour une raison étrange, cela ne fonctionne pas dans une vue, mais conduire à une solution dans mon cas. Merci! – CsBalazsHungary

0

@Peter Ilfrich: Ne pas jeter une exception lorsque vous essayez d'accéder aux CLOBs plus de 4000 octets ?

Ceci est un peu plus convalué, mais cela signifie que vous pouvez retirer en toute sécurité les petits clobs (< 4000) sur un dblink.

select [email protected]<link>((select <columnName> from [email protected]<link>), 4000, 1) 
    from <table>@<link> 
where [email protected]<link>((select <columnName> from [email protected]<link>)) <= 4000; 

Lecture d'un CLOB (ou un blob) sur une dblink est possible avec ce package PL/SQL:
https://github.com/HowdPrescott/Lob_Over_DBLink

Questions connexes