Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как вытащить поле типа blob через db link  [new]
dream-ibks
Member

Откуда:
Сообщений: 59
Требуется скопировать поле типа blob из удаленной таблицы в локальную и наоборот. Для этого я сначала вытаскиваю select'ом это поле.

Но оракл ругается "ORA-22992: cannot use LOB locators selected from remote tables".

Таблицы связаны db link'ом.

Может быть кто-нибудь что-нибудь скажет по этому поводу?
Буду очень благодарна!
11 июл 08, 19:08    [5924407]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15368
~
dbms_lob.writeappend (.. dbms_lob.substr@link(..)..)
11 июл 08, 19:51    [5924530]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
Marik73
Guest
create table local_table(f clob);

declare
  c clob;
begin
   execute immediate 'insert into local_table select lob_field from remote_table@my_dblink';
   select f into c from local_table;
end;
11 июл 08, 22:30    [5924807]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
dream-ibks
Member

Откуда:
Сообщений: 59
Спаисбо за ответы! Я к сожалению, пока не могу попробовать, только завтра буду на работе.
Но я не до конца поняла первый способ.

dbms_lob.substr@link(..) - что это за конструкция? Через апмперсанд ведь удаленная БД прописывается.

2 orawish: объясни, пожалуйста. Мои познания в оракле еще слишком посредственны, чтобы сообразить
11 июл 08, 22:49    [5924856]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
slamovsky
Member

Откуда:
Сообщений: 145
dream-ibks
Спаисбо за ответы! Я к сожалению, пока не могу попробовать, только завтра буду на работе.
Но я не до конца поняла первый способ.

dbms_lob.substr@link(..) - что это за конструкция? Через апмперсанд ведь удаленная БД прописывается.

2 orawish: объясни, пожалуйста. Мои познания в оракле еще слишком посредственны, чтобы сообразить


гы! амперсанд! забавно! где тут амперсанд? :-) вы наверное этот символ обозвали "@", так вот то что вы обзываете, уважаемая этим словом выглядит так: "&".
11 июл 08, 23:02    [5924886]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
Denis Popov
Member

Откуда: Санкт-Петербург
Сообщений: 7841
Marik73
create table local_table(f clob);

declare
  c clob;
begin
   execute immediate 'insert into local_table select lob_field from remote_table@my_dblink';
   select f into c from local_table;
end;


Можно просто:

insert into local_table select lob_field from remote_table@my_dblink;
11 июл 08, 23:09    [5924895]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
slamovsky
Member

Откуда:
Сообщений: 145
циркумфлекс показать? :-)
11 июл 08, 23:10    [5924899]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
dream-ibks
Member

Откуда:
Сообщений: 59
2 slamovsky
Иди учи русский, после уважаемая ставится запятая. Но тебе разрешая обращаться ко мне по имени - отчеству - Александра Константиновна.
И я знаю разницу между амперсандом и собачкой, просто есть людской фактор описки.
12 июл 08, 01:04    [5925182]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
Marik73
Guest
Denis Popov
Marik73
create table local_table(f clob);

declare
  c clob;
begin
   execute immediate 'insert into local_table select lob_field from remote_table@my_dblink';
   select f into c from local_table;
end;


Можно просто:

insert into local_table select lob_field from remote_table@my_dblink;


Не прокатит, ругнется "ORA-22992: cannot use LOB locators selected from remote tables".
12 июл 08, 12:20    [5925431]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
Denis Popov
Member

Откуда: Санкт-Петербург
Сообщений: 7841

Marik73 wrote:

> Не прокатит, ругнется "ORA-22992: cannot use LOB locators selected from remote tables".

Ругнется если делать, например, SELECT .. INTO .. FROM TABLE@LINK в PL/SQL, а простой запросе INSERT
INTO .. SELECT .. FROM TABLE@LINK у меня работает.

Posted via ActualForum NNTP Server 1.4

12 июл 08, 13:11    [5925498]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
slamovsky
Member

Откуда:
Сообщений: 145
dream-ibks
2 slamovsky
Иди учи русский, после уважаемая ставится запятая. Но тебе разрешая обращаться ко мне по имени - отчеству - Александра Константиновна.
И я знаю разницу между амперсандом и собачкой, просто есть людской фактор описки.


ага-ага именно так :-)!!! Странно, что ты топик этот запостила в ветке оракловой. Вдруг бы опять ошиблась и в ветку MS SQL написала. "людской фактор описки" :-))))))))))))))
12 июл 08, 13:30    [5925517]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
slamovsky
Member

Откуда:
Сообщений: 145
Denis Popov

Marik73 wrote:

> Не прокатит, ругнется "ORA-22992: cannot use LOB locators selected from remote tables".

Ругнется если делать, например, SELECT .. INTO .. FROM TABLE@LINK в PL/SQL, а простой запросе INSERT
INTO .. SELECT .. FROM TABLE@LINK у меня работает.
Posted via ActualForum NNTP Server 1.4

+1
12 июл 08, 13:44    [5925538]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
dream-ibks
Member

Откуда:
Сообщений: 59
2 slamovsky - пшел нафиг отсюда, флудер. Хоть бы одно умное сообщение из сотни написал

Ребята всем спасибо, получилось через временную табличку, как Marik73 посоветовал. Вставляла с помощью insert into select... Также пришлось заморочиться, чтобы вставить blob в удаленную табличку.

Еще вот что нашла- может кому потом пригодится.

From the docs:

LOB Restrictions

LOB columns are subject to the following restrictions:

Distributed LOBs are not supported. Therefore, you cannot use a remote locator in SELECT or WHERE clauses of queries or in functions of the DBMS_LOB package. 

The following syntax is not supported for LOBs:

SELECT lobcol FROM table1@remote_site;
INSERT INTO lobtable SELECT type1.lobattr FROM 
table1@remote_site;
SELECT DBMS_LOB.getlength(lobcol) FROM table1@remote_site;


(This statement produces error: ORA-22992 cannot use LOB locators selected from remote tables.)

However, you can use a remote locator in others parts of queries that reference LOBs. The following syntax is supported on remote LOB columns:

CREATE TABLE t AS SELECT * FROM table1@remote_site;
INSERT INTO t SELECT * FROM table1@remote_site;
UPDATE t SET lobcol = (SELECT lobcol FROM table1@remote_site);
INSERT INTO table1@remote_site ...
UPDATE table1@remote_site ...
DELETE FROM table1@remote_site ...


For the first three types of statement, which contain subqueries, only standalone LOB columns are allowed in the select list. SQL functions or DBMS_LOB APIs on LOBs are not supported. For example, the following statement is supported:

CREATE TABLE AS SELECT clob_col FROM tab@dbs2; 


However, the following statement is not supported:

CREATE TABLE AS SELECT dbms_lob.substr(clob_col) from tab@dbs2;
12 июл 08, 13:49    [5925551]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
NikitaKadukhin
Member

Откуда:
Сообщений: 125
А как быть в ситуации когда надо вытащить поле блоб
в таблицу имеющей не один столбец а как минимум 4 и два из них не должны быть нулями
и один блоб

__________________________________
insert into tabelspace.Tablica_clob
(id_s,id_m,DIAGR,data) 
values
(10000051110 , 56 , select DIAGR from tabelspace.Tablica_clob@link 
WHERE id_s=23441  AND id_m=61,data);							_______________________________________________	 


27 ноя 08, 07:10    [6492699]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
blacks
Guest
http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96591/adl04mng.htm#98328
8 июн 09, 15:48    [7277160]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как вытащить поле типа blob через db link  [new]
Vadim Romanenko
Member

Откуда: Харьков, Украина
Сообщений: 1388
Привет всем!

Позволю себе потревожить демона из прошлого :)
Вот - сам столкнулся с получением БЛОБа с удаленной БД. Самый интересный вариант - конечно же insert into ... select. Но возникает вопрос. А нет ли тут каких-то ограничений на размер БЛОБа, который передается таким способом??
31 янв 12, 18:04    [12006459]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить поле типа blob через db link  [new]
Mumytroll
Member

Откуда:
Сообщений: 224
Решал подобную проблему. С insert into нарвались на проблему, иногда, отваливался дблинк.
Почему, не разобрались. В результате тягали блоками по 4к через варчар. Это работало как часы.
Если размер блока увеличивали, то с линком начинались проблемы, подвисал.
1 фев 12, 10:22    [12009158]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить