CftClub.ru
Клуб специалистов ЦФТ-Банк

Получение LONG RAW через DB Link

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
prankster
Профи


Вступление в Клуб: 22.08.2014
СообщениеПн Сен 14, 2015 14:36   Получение LONG RAW через DB Link Ответить с цитатой
Полезность: Нет оценки
Добрый день!

Требуется перенести данные из удаленной БД через линк, проблема в поле с типом LONG RAW.
И как ни крути, считать эти данные в таблицу/переменную не получается, всегда ошибки:
ORA-00997: неверное использование типа данных LONG
ORA-01406: выбранное значение столбца усекается

А использование to_lob, по понятным причинам, приводит к ошибке ORA-22992: невозможно использовать указатели LOB, выбранные из удаленных таблиц.

Есть какие-нибудь идеи?
P/S Делать что-либо в удаленной БД нельзя, только чтение.
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеПн Сен 14, 2015 14:57    Ответить с цитатой
Полезность: Нет оценки
select long_data from table1@link into table2
prankster
Профи


Вступление в Клуб: 22.08.2014
СообщениеПн Сен 14, 2015 15:05    Ответить с цитатой
Полезность: Нет оценки
prog пишет:
select long_data from table1@link into table2


Независимо от того, что тут подразумевалось под table2 - таблица бд/ассоциативный массив/переменная - не получается:
Для массива - ORA-06502: PL/SQL: : Bulk Bind: Truncated Bind ошибка числа или значения

Для таблицы - ORA-00997: неверное использование типа данных LONG

Для переменной - ORA-01406: выбранное значение столбца усекается
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеПн Сен 14, 2015 15:22   Re: Получение LONG RAW через DB Link Ответить с цитатой
Полезность: Нет оценки
prankster пишет:
P/S Делать что-либо в удаленной БД нельзя, только чтение.

Разместить там функцию, преобразующую long raw к списку строк varchar2 можно?
Желательно функцию сделать pipeline.
alx
Участник - экстремал


Вступление в Клуб: 29.06.2007
СообщениеПн Сен 14, 2015 15:26    Ответить с цитатой
Полезность: Нет оценки
заметили, что insert поля с типом long не проходит через дб-линк, но update проходит без ошибки.
prankster
Профи


Вступление в Клуб: 22.08.2014
СообщениеПн Сен 14, 2015 15:39   Re: Получение LONG RAW через DB Link Ответить с цитатой
Полезность: Нет оценки
Random пишет:
prankster пишет:
P/S Делать что-либо в удаленной БД нельзя, только чтение.

Разместить там функцию, преобразующую long raw к списку строк varchar2 можно?
Желательно функцию сделать pipeline.


Очень нежелательно, но придется, если ничего не придумаю.. Тоже думал на крайний такое решение с pipelined.

alx пишет:
заметили, что insert поля с типом long не проходит через дб-линк, но update проходит без ошибки.

Пробую update, но получаю все ту же ORA-00997: неверное использование типа данных LONG.
Вы как делали? Обычный update:
Код:
update table1 t set t.c_long_data = (select c_long_raw from table2@dblink x where x.id = :b1) where t.id = :b2
?
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеПн Сен 14, 2015 15:41    Ответить с цитатой
Полезность: Нет оценки
Bulk insert должен сработать.

Код:
insert into local_table select * from remote_table@link
prankster
Профи


Вступление в Клуб: 22.08.2014
СообщениеПн Сен 14, 2015 15:45    Ответить с цитатой
Полезность: Нет оценки
maestro пишет:
Bulk insert должен сработать.

Код:
insert into local_table select * from remote_table@link


Не, Серег, не работает - ORA-00997 Sad
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеПн Сен 14, 2015 16:02    Ответить с цитатой
Полезность: Нет оценки
prankster пишет:
maestro пишет:
Bulk insert должен сработать.

Код:
insert into local_table select * from remote_table@link


Не, Серег, не работает - ORA-00997 Sad


А если преобразовать в BLOB, а затем bulk insert.
Попробуй
Код:
insert into local_table_with_blob select to_lob(long_raw_field) from remote_table@link
[/quote]
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПн Сен 14, 2015 16:21    Ответить с цитатой
Полезность: Нет оценки
Followup August 26, 2008 - 7:44 pm UTC
long raw, not going to happen over a database link

blob - no problem.


https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:1101164500346436784
prankster
Профи


Вступление в Клуб: 22.08.2014
СообщениеПн Сен 14, 2015 16:27    Ответить с цитатой
Полезность: Нет оценки
maestro пишет:
prankster пишет:
maestro пишет:
Bulk insert должен сработать.

Код:
insert into local_table select * from remote_table@link


Не, Серег, не работает - ORA-00997 Sad


А если преобразовать в BLOB, а затем bulk insert.
Попробуй
Код:
insert into local_table_with_blob select to_lob(long_raw_field) from remote_table@link
[/quote]

Та же ошибка.. Самое забавное, что обычный селект в pl/sql developer показывает данные в raw-столбце, а пихнуть его куда-либо никак
prankster
Профи


Вступление в Клуб: 22.08.2014
СообщениеПн Сен 14, 2015 16:38    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Followup August 26, 2008 - 7:44 pm UTC
long raw, not going to happen over a database link

blob - no problem.


https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:1101164500346436784


Даже дядька Том не знает как? Shocked
Судя по всему, без доработок в удаленной БД не обойтись Sad
maestro
Профи


Вступление в Клуб: 12.10.2010
СообщениеПн Сен 14, 2015 16:47    Ответить с цитатой
Полезность: Нет оценки
prankster пишет:

Та же ошибка.. Самое забавное, что обычный селект в pl/sql developer показывает данные в raw-столбце, а пихнуть его куда-либо никак


Тогда Джава тебе в помощь Smile
prankster
Профи


Вступление в Клуб: 22.08.2014
СообщениеПн Сен 14, 2015 17:04    Ответить с цитатой
Полезность: Нет оценки
maestro пишет:
prankster пишет:

Та же ошибка.. Самое забавное, что обычный селект в pl/sql developer показывает данные в raw-столбце, а пихнуть его куда-либо никак


Тогда Джава тебе в помощь Smile


Very Happy Ага, этим и занялся, может что и получится. Главное чтобы не проседало на больших объемах, а то там заморочь с коннектами какая-то
alx
Участник - экстремал


Вступление в Клуб: 29.06.2007
СообщениеПн Сен 14, 2015 18:53   Re: Получение LONG RAW через DB Link Ответить с цитатой
Полезность: Нет оценки
Цитата:
alx пишет:
заметили, что insert поля с типом long не проходит через дб-линк, но update проходит без ошибки.

Пробую update, но получаю все ту же ORA-00997: неверное использование типа данных LONG.
Вы как делали? Обычный update:
Код:
update table1 t set t.c_long_data = (select c_long_raw from table2@dblink x where x.id = :b1) where t.id = :b2
?


ошибочка вышла, сорри, там был тип CLOB, не LONG
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru