2010-08-29 2 views

ответ

5

Ответ правилен в определенном контексте, для простых отборных заявлений по линии DB, вы получите эту ошибку:

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

Из инструкции ошибки:

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

Я также не удалось найти окончательную документацию по этому вопросу ... но мы просто столкнулись с той же проблемой в нашем хранилище данных. Тем не менее, есть несколько возможностей для работы, например, pulling the data over or creating a view.

+0

спасибо за ссылку! – Moeb

1

У меня была такая же проблема вчера. Это Мое решение: создайте представление romote на таблице romote, когда приходит CLOB cols, используйте to_char(), например to_char (col2). Затем вы можете выбрать данные из представления. Это не может быть хорошим решением, но оно работает.

1

Если обе схемы БД находятся в том же экземпляре Oracle, вы можете использовать следующий метод обхода:

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

Это вернет вам то же самое, как если доступ будет локальный столбец LOB.

+0

по какой-то странной причине, он не работает в представлении, но приводит к решению в моем случае. Благодаря! – CsBalazsHungary

0

@Peter Ilfrich: Разве это не сгенерирует исключение при попытке получить доступ к любой объекты CL более 4000 байт ?

Это немного более условно, но это означает, что вы можете безопасно оттянуть небольшие складки (< 4000) над 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; 

Чтение CLOB (или BLOB) над DBLink возможно с этим пакетом PL/SQL:
https://github.com/HowdPrescott/Lob_Over_DBLink

Смежные вопросы