Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
столкнулся с проблемой.
похожее обсуждение было тут: https://www.sql.ru/forum/153066/update-blob-in-trigger

но так и не понял решения.

суть вот в чем:
в среде разработки Toad for Oracle, пытаюсь обновить поле с типом BLOB. есть триггер, который потом переливает это поле в другую таблицу.
если выполнить апдейт через statement (update my_table set blob_field = ...), то в триггере длина нового блоба ненулевая (dbms_lob.getlength(:new.blob_field) > 0), но если изменяю тело BLOBa через data grid (двойной клик по полю в строке, затем открывается "Blob editor", затем выбираю любой файл непустой и загружаю, то в том же триггере почему-то dbms_lob.getlength = 0, но из таблицы могу скачать блобик и там есть открываемое непустое содержимое)
5 фев 19, 14:42    [21801963]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
-2-
Member

Откуда:
Сообщений: 14504
chavchipav,

Lob locator
5 фев 19, 14:55    [21801975]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28823
RTFM LOB Rules
5 фев 19, 14:57    [21801977]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
не очень понял.

в обоих случаях отрабатывает один и тот же код в триггере, но через statement апдейта призодит ненулевая длина блоба, а через Toad data grid в триггер приходит якобы нулевой блоб. такое ощущение, что при апдейте через data grid создается какой-то другой локатор, который непонятно как и когда присваивается полю таблицы
5 фев 19, 15:41    [21802007]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28823
chavchipav
такое ощущение, что при апдейте через data grid создается какой-то другой локатор, который непонятно как и когда присваивается полю таблицы
Не надо гнать пурги, когда не понимаешь как работают LOB-ы.
Чтобы понять, придётся вдумчиво прочитать документацию.
5 фев 19, 16:00    [21802025]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
Elic,

суть объекта LOB известна и понятна, может Вы не поняли суть вопроса? в чем подвох проблемы?

повторюсь: в триггере на таблице выполняется код, в частности dbms_output.put_line(dbms_lob.getlength( :new.blob_body ));

ситуация 1:
апдейт через SQL

update my_table
set blob_field = (select blob_src from temp_table)
where id = 12345;


ситуация 2:
в data grid среды разработки, в частности TOAD, два раза если кликнуть на поле типа BLOB, то открывается editor, в котором можно выбрать файл из файловой системы ОС и поместить его по факту в область памяти, на которую указывает локатор из выбранного поля строки, запись происходит, могу затем посмотреть (скачать) загруженный файл

в обеих ситуациях вызывается один и тот же код триггера, но в первой ситуации выводится значение, большее 0, например 199374, а во второй ситуации выводится значение 0
6 фев 19, 18:42    [21802992]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28823
chavchipav
суть объекта LOB известна и понятна, может Вы не поняли суть вопроса? в чем подвох проблемы?
Считающий себя недопонятым гением и талдычащий одно и то же, скажи, что тебе непонятно в следуующей части документации:
RTFM
if you use OCI functions or DBMS_LOB routines to change the value of a LOB column or the LOB attribute of an object type column, Oracle does not fire the DML trigger.
6 фев 19, 19:01    [21803005]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
-2-
Member

Откуда:
Сообщений: 14504
chavchipav
суть объекта LOB известна и понятна
Ламерство уныло.
Пройдись хотя бы по ссылкам предложенного поиска. Твоя же ссылка содержит код, достаточный для анализа.
6 фев 19, 19:01    [21803006]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
Elic, -2-,

спасибо, стало яснее.

но скажу, что на форумах то наверное и пишут для того, чтобы понять проблему и обращаются к знающим людям.

и можно было сразу ответить нормально, без лишнего выпендрёжа!!
7 фев 19, 09:06    [21803207]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28823
chavchipav
и можно было сразу ответить нормально, без лишнего выпендрёжа!!
Т.е. это следует понимать как "Я - д'Артаньян. По ссылкам не хожу. А вы - …" ?
7 фев 19, 09:20    [21803212]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
Elic,

"
что тебе непонятно в следуующей части документации:
RTFM
if you use OCI functions or DBMS_LOB routines to change the value of a LOB column or the LOB attribute of an object type column, Oracle does not fire the DML trigger
"

ключевые слова "does not fire the DML trigger" - которые означают, что подобные действия не инициируют событие, на которое происходит запуск триггера.

действительно, если попробовать записать данные через dbms_lob, то триггер даже не будет выполняться.

в моих же описанных выше ситуациях я написал, что триггер выполняется (!) = отрабатывает код триггера, чтобы понять это, я добавил простой output, чтобы понять, что триггер в принципе запускался.
7 фев 19, 09:23    [21803215]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28823
chavchipav
в моих же описанных выше ситуациях я написал, что триггер выполняется (!) = отрабатывает код триггера, чтобы понять это, я добавил простой output, чтобы понять, что триггер в принципе запускался.
О чудо! Триггер срабатывает. Но стало ли тебе легче?

Пора бы уже понять, что содержимое lob-а триггером ловить ненадёжно.
7 фев 19, 09:31    [21803220]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
Elic,

это понятно, что ненадежно!

но как объясняется поведение данных в моих двух примерах - я это хочу понять?

я же говорю, что триггер выполняется в обоих моих примерах, а вы кидаете ссылки, в которых описываются ситуации, не активирующие триггер.

ну или давайте киньте еще какую-нибудь ссылку, сделайте тем самым вид, что:
- всё знаете (но не отвечаете нормально при этом), плюс выставив меня незнающим (причем я не отрицаю, что чего-то недопонимаю)
или
- не знаете решения или причины проблемы и не хотите об этом сказать (признаться) ?

ну и разойдемся тогда, чтобы не тратить время...
7 фев 19, 09:38    [21803225]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
-2-
Member

Откуда:
Сообщений: 14504
chavchipav
понятно
Опять?!
7 фев 19, 09:59    [21803238]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
Elic
chavchipav
в моих же описанных выше ситуациях я написал, что триггер выполняется (!) = отрабатывает код триггера, чтобы понять это, я добавил простой output, чтобы понять, что триггер в принципе запускался.
О чудо! Триггер срабатывает. Но стало ли тебе легче?

Пора бы уже понять, что содержимое lob-а триггером ловить ненадёжно.


триггер срабатывает, значит ето не OCI functions or DBMS_LOB

где в доке написано, что если триггер fire (а он fire) то ловить ненадежно?


....
stax
7 фев 19, 09:59    [21803240]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
-2-
Member

Откуда:
Сообщений: 14504
Stax
триггер срабатывает, значит ето не OCI functions or DBMS_LOB
Еще один логик.
7 фев 19, 10:00    [21803241]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28823
chavchipav
- всё знаете (но не отвечаете нормально при этом), плюс выставив меня незнающим (причем я не отрицаю, что чего-то недопонимаю)
- не знаете решения или причины проблемы и не хотите об этом сказать (признаться) ?
Третье - ты д'артаньян, не способный пройтись по ссылкам и воспринять информацию. Послнедний намёк: returning.
7 фев 19, 10:02    [21803245]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28823
Stax
триггер срабатывает, значит ето не OCI functions or DBMS_LOB
Станислав, включи мозг. DML триггера ловят DML события.
7 фев 19, 10:06    [21803247]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
Elic, как это понимать??
Elic
Третье - ты д'артаньян



что опять??
-2-
Опять?!



так вы ссылки кидаете и намёками бросаетесь, а слабо написать нормально?)
или вы сами значит не знаете и делаете какие-то догадки, чтобы не спалиться?
7 фев 19, 10:18    [21803262]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
Elic
Stax
триггер срабатывает, значит ето не OCI functions or DBMS_LOB
Станислав, включи мозг. DML триггера ловят DML события.


если не срабатывает, то я ето допустим понимаю (OCI or DBMS_LOB)


но триггер то сработал

что словил триггер (какое DML событие) кагда dbms_lob.getlength(:new.blob_field)=0?

імхо, если он fire , то должен отрабатывать как с update и dbms_lob.getlength>0

.....
stax
7 фев 19, 10:51    [21803296]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
chavchipav
или вы сами значит не знаете и делаете какие-то догадки, чтобы не спалиться?

знають!

но предлагают не рыбу, а удочку в пустыне ораклячей доки

....
stax
7 фев 19, 10:55    [21803302]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
перед тем как писать здесь, я прочитал документацию, но там не нашел описание поведения как в частности описал я.

поэтому они и кидают доки, потому что сами их не прочитали видимо и ссылаются на них, думая, что там есть...
7 фев 19, 11:04    [21803314]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28823
chavchipav
поэтому они и кидают доки, потому что сами их не прочитали видимо и ссылаются на них, думая, что там есть...
Самовлюблённый ламер, returning в приведённых ссылках искать не стал?
7 фев 19, 11:38    [21803356]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28823
Stax
імхо, если он fire , то должен отрабатывать как с update и dbms_lob.getlength>0
Ты безнадёжен.
7 фев 19, 11:39    [21803360]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
Elic,

самовлюбленный и безнадежный по-моему здесь ты, если можешь только оскорблять и нормально на вопросы не отвечать
7 фев 19, 11:47    [21803367]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47264

chavchipav
перед тем как писать здесь, я прочитал документацию, но там не нашел описание поведения
как в частности описал я.

Плохо искал. Стандартный паттерн для старых приложений: вставка EMPTY_LOB, а потом его
изменение через OCI.

Posted via ActualForum NNTP Server 1.5

7 фев 19, 13:38    [21803473]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
Elic
Stax
імхо, если он fire , то должен отрабатывать как с update и dbms_lob.getlength>0
Ты безнадёжен.


есть такое

раз о блобах зашло
не могу понять как DBMS_LOB узнает что строка заблокирована?

мне ето уже не надо, чисто из любопытства

.....
stax
7 фев 19, 14:02    [21803492]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
Dimitry Sibiryakov,

понятно, спасибо!
7 фев 19, 14:04    [21803499]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9395
Stax
не могу понять как DBMS_LOB узнает что строка заблокирована?

мне ето уже не надо, чисто из любопытства


А ты попробуй:

SQL> DECLARE
  2      V_C CLOB;
  3  BEGIN
  4      SELECT  C
  5        INTO  V_C
  6        FROM  TBL;
  7      DBMS_LOB.WRITEAPPEND(V_C,3,'DEF');
  8  END;
  9  /
DECLARE
*
ERROR at line 1:
ORA-22920: row containing the LOB value is not locked
ORA-06512: at "SYS.DBMS_LOB", line 1163
ORA-06512: at line 7


SQL> DECLARE
  2      V_C CLOB;
  3  BEGIN
  4      SELECT  C
  5        INTO  V_C
  6        FROM  TBL
  7        FOR UPDATE;
  8      DBMS_LOB.WRITEAPPEND(V_C,3,'DEF');
  9  END;
 10  /

PL/SQL procedure successfully completed.

SQL> 


SY.
7 фев 19, 17:13    [21803716]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9395
Stax
не могу понять как DBMS_LOB узнает что строка заблокирована?

мне ето уже не надо, чисто из любопытства


Локатор по опредeлению да и переводе есть местонахождение. Ты ведь не удивляешься что навигатор в твоем телефоне или машине знает ктo ты и где ты есть.

SY.
7 фев 19, 17:20    [21803729]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
SY
Stax
не могу понять как DBMS_LOB узнает что строка заблокирована?

мне ето уже не надо, чисто из любопытства


А ты попробуй:

SQL> DECLARE
  2      V_C CLOB;
  3  BEGIN
  4      SELECT  C
  5        INTO  V_C
  6        FROM  TBL;
  7      DBMS_LOB.WRITEAPPEND(V_C,3,'DEF');
  8  END;
  9  /
DECLARE
*
ERROR at line 1:
ORA-22920: row containing the LOB value is not locked
ORA-06512: at "SYS.DBMS_LOB", line 1163
ORA-06512: at line 7


SQL> DECLARE
  2      V_C CLOB;
  3  BEGIN
  4      SELECT  C
  5        INTO  V_C
  6        FROM  TBL
  7        FOR UPDATE;
  8      DBMS_LOB.WRITEAPPEND(V_C,3,'DEF');
  9  END;
 10  /

PL/SQL procedure successfully completed.

SQL> 


SY.


SY я ето знаю/знал

вопрос как он (DBMS_LOB) определяет что value is not locked?

....
stax
7 фев 19, 18:49    [21803793]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
-2-
Member

Откуда:
Сообщений: 14504
Stax
как он (DBMS_LOB) определяет что value is not locked?
У тебя сложности c переводом locator на украинский или нужны технические детали, где именно хранится lock строки?
7 фев 19, 19:19    [21803814]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
-2-
Stax
как он (DBMS_LOB) определяет что value is not locked?
У тебя сложности c переводом locator на украинский или нужны технические детали, где именно хранится lock строки?


и то, и то
я переводил locator как указатель
гугль по другому

Іменник
локатор - locator
землемер - surveyor, locator, land-surveyor

мне больше интересно как (с помощью чего) dbms_lob узнает что запись заблокирована (захвачена)

....
stax
8 фев 19, 09:29    [21804025]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 17182
Stax
интересно как (с помощью чего) dbms_lob узнает что запись заблокирована

Мнэээ... ему SqlEngine скажет, если оно не так. Как и OCI-клиенту. SY же показал.
8 фев 19, 11:34    [21804168]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
andrey_anonymous
Stax
интересно как (с помощью чего) dbms_lob узнает что запись заблокирована

Мнэээ... ему SqlEngine скажет, если оно не так. Как и OCI-клиенту. SY же показал.


если чесно, то я не понял что показал SY

чтоб получить "локатор" блоба кляуза FOR UPDATE не обязательна,
поетому и интересно каким механизмом dbms_lob проверяет наличие блокировки

....
stax
8 фев 19, 11:43    [21804174]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 17182
Stax
чтоб получить "локатор" блоба кляуза FOR UPDATE не обязательна,

Если только читать - не обязательна.
8 фев 19, 12:00    [21804195]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
andrey_anonymous
Stax
чтоб получить "локатор" блоба кляуза FOR UPDATE не обязательна,

Если только читать - не обязательна.

и писать (dbms_lob.write) тоже, главное чтоб запись было залочена
вот етот момент мне и интересен, как dbms_lob.write проверяет

.....
stax
8 фев 19, 12:32    [21804245]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 17182
Stax
как dbms_lob.write проверяет

Берет и пишет. А SQL engine его посылает, как показывал SY.
8 фев 19, 12:46    [21804258]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
andrey_anonymous,

табличка с одной строкой (для упрощения)
SQL> set lines 80
SQL> desc stax_blob
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(38)
 B                                                  BLOB

SQL> declare
  2    v_data raw(32000);
  3    V_bb blob;
  4    v_id int;
  5  begin
  6    commit;
  7    select id,b into v_id,v_bb from stax_blob ; --for update of id;
  8    --получили локатор незаблокированной записи
  9    update stax_blob set id=1;
 10    --заблокировали
 11    v_data := utl_raw.cast_to_raw(rpad('Stax',v_id*10,'!'));
 12    --откуда знает что уже заблакировали?
 13    dbms_lob.write(
 14      lob_loc => v_bb,
 15      amount => utl_raw.length(v_data),
 16      offset => 1,
 17      buffer => v_data
 18      );
 19  end;
 20  /

PL/SQL procedure successfully completed.

SQL> select * from stax_blob;

        ID B
---------- --------------------
         1 53746178212121212121
           21212121212121212121
           21212121212121212121
           21212121212121212121
           21212121212121212121
           21212121212121212121


SQL>


....
stax
8 фев 19, 13:30    [21804305]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47264

Stax
--откуда знает что уже заблакировали?

Проверили блокировку на записи, на которую указывает локатор. Оттуда и знает.

Posted via ActualForum NNTP Server 1.5

8 фев 19, 13:43    [21804327]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
Dimitry Sibiryakov
Stax
--откуда знает что уже заблакировали?

Проверили блокировку на записи, на которую указывает локатор. Оттуда и знает.


етого я и не знаю (туплю, на ручнике)
как проверяет? какими средствами?

.....
stax
8 фев 19, 13:53    [21804339]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
-2-
Member

Откуда:
Сообщений: 14504
Stax
какими средствами?
dbms_lob по локатору определяет роуид строки, по роуид номера файла и блока, где лежит строка. Делает дамп блока в трейс, регекспами вытаскивает из трейса заголовок строки, оттуда берет номер позиции в itl, из itl выкусывает флаг lock=1.
Или тебе прислать машинные коды oracle.exe на 400 мб?
8 фев 19, 14:07    [21804358]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
-2-,

спасибо

теперь понятно,
ето внутренний (закрытый) механизм оракля

на sql, pl/sql етого не добится

я пытался с имитировать средствами языка sql

....
stax
8 фев 19, 14:32    [21804392]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 17182
Stax
имитировать средствами языка sql

Ммм?
Имитировать - так имитировать.
Блокировать строку, можно даже dbms_lock для большей имитационности :).
8 фев 19, 14:36    [21804396]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
andrey_anonymous,

не блокировать, а проверить заблокирована ли
skip lock/time, автономка, savepoint, что-то еще

теперь я верю, что используется внутренний механизм

просто надеялся что проверяется с помощью "sql"

еще раз спасибо, мое любопытство удовлетворено

.....
stax
8 фев 19, 14:55    [21804419]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 17182
Stax
проверить заблокирована ли
skip lock/time, автономка, savepoint, что-то еще

select for update nowait в автономке не сработал?
8 фев 19, 15:23    [21804464]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
andrey_anonymous
Stax
проверить заблокирована ли
skip lock/time, автономка, savepoint, что-то еще

select for update nowait в автономке не сработал?

не сработал
....
stax
8 фев 19, 15:26    [21804473]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
-2-
Member

Откуда:
Сообщений: 14504
andrey_anonymous
select for update nowait в автономке не сработал?
Автономка с и не покажет, чья блокировка.
Нужно в текущей транзакции выполнить select for update. После этого ни if, ни exception не нужны. Блокировка есть!
8 фев 19, 15:29    [21804483]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
-2-
andrey_anonymous
select for update nowait в автономке не сработал?
Автономка с и не покажет, чья блокировка.
Нужно в текущей транзакции выполнить select for update. После этого ни if, ни exception не нужны. Блокировка есть!

если блокировки не было, то for update наложит

....
stax
8 фев 19, 15:32    [21804491]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 17182
-2-
Автономка с и не покажет, чья блокировка.

Речь-то ведь про имитацию, а не про работу :)
8 фев 19, 17:06    [21804672]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9395
Stax
теперь я верю, что используется внутренний механизм

просто надеялся что проверяется с помощью "sql"


Любой lock/проверка на lock должна быть произведена как можно быстро, так-что "проверяется с помощью sql" просто не вписывается.

SY.
8 фев 19, 17:31    [21804709]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18014
Извините, что вмешиваюсь

Насколько помню, LOB locator не хранит ROWID строки, к которой прицеплен
Соответственно, увидеть блокировку строки при доступе через локатор достаточно затруднительно

В общем, пока тяпнитсо, пытаюсь что нибудь сообразить
8 фев 19, 17:49    [21804719]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9395
Вячеслав, думаю через:

struct OCI_Lob
{
    OCILobLocator  *handle;         /* OCI handle */
    ub4             hstate;         /* object variable state */
    OCI_Connection *con;            /* pointer to connection object */
    ub4             type;           /* type of lob */
    big_uint        offset;         /* current offset for R/W */
};


SY.
8 фев 19, 18:26    [21804748]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1712
SY
должна быть произведена как можно быстро
SY.


имхо
провереряет при каждом вызове dbms_lob.write

.....
stax
11 фев 19, 09:46    [21806084]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Oracle Ответить