2010-08-29 5 views

Antwort

5

Die Antwort in einem bestimmten Kontext, für einfache select-Anweisungen über einen DB-Link korrekt ist, werden Sie diese Fehlermeldung erhalten:

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

Aus dem Handbuch Fehler: auch

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

I hatte Schwierigkeiten, eine definitive Dokumentation zu diesem Thema zu finden ... aber wir hatten gerade das gleiche Problem in unserem Data Warehouse. Es sind jedoch mehrere Workarounds verfügbar, z. B. pulling the data over or creating a view.

+0

danke für den Link! – Moeb

1

Ich hatte gestern den gleichen Ärger. Dies ist meine Lösung: Erstellen Sie eine Romote-Ansicht für die Romote-Tabelle. Wenn CLOBSpalte verwendet wird, verwenden Sie to_char(), z. B. to_char (col2). Dann können Sie Daten aus der Ansicht auswählen. Es ist vielleicht keine gute Lösung, aber es funktioniert.

1

Wenn beide DB-Systemen in der gleichen Oracle-Instanz sind, können Sie die folgende Abhilfe verwenden:

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

Dies wird Ihnen die gleiche Rendite wie wenn Sie eine lokale LOB-Spalte zugreifen würde.

+0

aus irgendeinem seltsamen Grund, es funktioniert nicht in einer Ansicht, aber in meinem Fall zu einer Lösung führen. Vielen Dank! – CsBalazsHungary

0

@ Peter Ilfrich: Ist das nicht eine Ausnahme auslösen, wenn alle CLOBs über 4000 Bytes zuzugreifen versuchen, ?

Dies ist ein wenig mehr aufgewertet, aber es bedeutet, dass Sie kleine Clobs (< 4000) über einen dblink sicher zurückziehen können.

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; 

ein CLOB Lesen (oder ein BLOB) über einen dblink ist möglich mit diesem PL/SQL-Paket:
https://github.com/HowdPrescott/Lob_Over_DBLink

Verwandte Themen