powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Апдейт поля BLOB
54 сообщений из 54, показаны все 3 страниц
Апдейт поля BLOB
    #39769679
chavchipav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
столкнулся с проблемой.
похожее обсуждение было тут: 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, но из таблицы могу скачать блобик и там есть открываемое непустое содержимое)
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39769686
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chavchipav,

Lob locator
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39769688
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39769712
chavchipav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не очень понял.

в обоих случаях отрабатывает один и тот же код в триггере, но через statement апдейта призодит ненулевая длина блоба, а через Toad data grid в триггер приходит якобы нулевой блоб. такое ощущение, что при апдейте через data grid создается какой-то другой локатор, который непонятно как и когда присваивается полю таблицы
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39769728
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chavchipavтакое ощущение, что при апдейте через data grid создается какой-то другой локатор, который непонятно как и когда присваивается полю таблицыНе надо гнать пурги, когда не понимаешь как работают LOB-ы.
Чтобы понять, придётся вдумчиво прочитать документацию.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770364
chavchipav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770373
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chavchipavсуть объекта LOB известна и понятна, может Вы не поняли суть вопроса? в чем подвох проблемы?Считающий себя недопонятым гением и талдычащий одно и то же, скажи, что тебе непонятно в следуующей части документации:RTFMif 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 .
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770374
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chavchipavсуть объекта LOB известна и понятнаЛамерство уныло.
Пройдись хотя бы по ссылкам предложенного поиска. Твоя же ссылка содержит код, достаточный для анализа.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770503
chavchipav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic, -2-,

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

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

и можно было сразу ответить нормально, без лишнего выпендрёжа!!
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770507
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chavchipavи можно было сразу ответить нормально, без лишнего выпендрёжа!!Т.е. это следует понимать как "Я - д'Артаньян. По ссылкам не хожу. А вы - …" ?
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770508
chavchipav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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, чтобы понять, что триггер в принципе запускался.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770511
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chavchipavв моих же описанных выше ситуациях я написал, что триггер выполняется (!) = отрабатывает код триггера, чтобы понять это, я добавил простой output, чтобы понять, что триггер в принципе запускался.О чудо! Триггер срабатывает. Но стало ли тебе легче?

Пора бы уже понять, что содержимое lob-а триггером ловить ненадёжно.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770512
chavchipav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

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

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

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

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

ну и разойдемся тогда, чтобы не тратить время...
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770520
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chavchipavпонятноОпять?!
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770521
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicchavchipavв моих же описанных выше ситуациях я написал, что триггер выполняется (!) = отрабатывает код триггера, чтобы понять это, я добавил простой output, чтобы понять, что триггер в принципе запускался.О чудо! Триггер срабатывает. Но стало ли тебе легче?

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

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

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


....
stax
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770522
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxтриггер срабатывает, значит ето не OCI functions or DBMS_LOBЕще один логик.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770525
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chavchipav- всё знаете (но не отвечаете нормально при этом), плюс выставив меня незнающим (причем я не отрицаю, что чего-то недопонимаю)
- не знаете решения или причины проблемы и не хотите об этом сказать (признаться) ?Третье - ты д'артаньян, не способный пройтись по ссылкам и воспринять информацию. Послнедний намёк: returning.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770527
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxтриггер срабатывает, значит ето не OCI functions or DBMS_LOBСтанислав, включи мозг. DML триггера ловят DML события.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770534
chavchipav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic, как это понимать??
ElicТретье - ты д'артаньян


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


так вы ссылки кидаете и намёками бросаетесь, а слабо написать нормально?)
или вы сами значит не знаете и делаете какие-то догадки, чтобы не спалиться?
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770554
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicStaxтриггер срабатывает, значит ето не 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
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770557
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chavchipavили вы сами значит не знаете и делаете какие-то догадки, чтобы не спалиться?
знають!

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

....
stax
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770563
chavchipav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
перед тем как писать здесь, я прочитал документацию, но там не нашел описание поведения как в частности описал я.

поэтому они и кидают доки, потому что сами их не прочитали видимо и ссылаются на них, думая, что там есть...
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770578
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chavchipavпоэтому они и кидают доки, потому что сами их не прочитали видимо и ссылаются на них, думая, что там есть...Самовлюблённый ламер, returning в приведённых ссылках искать не стал?
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770581
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxімхо, если он fire , то должен отрабатывать как с update и dbms_lob.getlength>0Ты безнадёжен.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770586
chavchipav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

самовлюбленный и безнадежный по-моему здесь ты, если можешь только оскорблять и нормально на вопросы не отвечать
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770648
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chavchipavперед тем как писать здесь, я прочитал документацию, но там не нашел описание поведения
как в частности описал я.

Плохо искал. Стандартный паттерн для старых приложений: вставка EMPTY_LOB, а потом его
изменение через OCI.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770663
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicStaxімхо, если он fire , то должен отрабатывать как с update и dbms_lob.getlength>0Ты безнадёжен.

есть такое

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

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

.....
stax
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770668
chavchipav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

понятно, спасибо!
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770761
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxне могу понять как DBMS_LOB узнает что строка заблокирована?

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


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

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
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.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770770
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxне могу понять как DBMS_LOB узнает что строка заблокирована?

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


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

SY.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770802
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYStaxне могу понять как DBMS_LOB узнает что строка заблокирована?

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


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

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
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
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770816
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxкак он (DBMS_LOB) определяет что value is not locked?У тебя сложности c переводом locator на украинский или нужны технические детали, где именно хранится lock строки?
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39770929
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Staxкак он (DBMS_LOB) определяет что value is not locked?У тебя сложности c переводом locator на украинский или нужны технические детали, где именно хранится lock строки?

и то, и то
я переводил locator как указатель
гугль по другому
Код: plaintext
1.
2.
3.
Іменник
локатор - locator
землемер - surveyor, locator, land-surveyor

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

....
stax
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771020
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxинтересно как (с помощью чего) dbms_lob узнает что запись заблокирована
Мнэээ... ему SqlEngine скажет, если оно не так. Как и OCI-клиенту. SY же показал.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771023
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousStaxинтересно как (с помощью чего) dbms_lob узнает что запись заблокирована
Мнэээ... ему SqlEngine скажет, если оно не так. Как и OCI-клиенту. SY же показал.

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

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

....
stax
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771031
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxчтоб получить "локатор" блоба кляуза FOR UPDATE не обязательна,
Если только читать - не обязательна.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771053
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousStaxчтоб получить "локатор" блоба кляуза FOR UPDATE не обязательна,
Если только читать - не обязательна.
и писать (dbms_lob.write) тоже, главное чтоб запись было залочена
вот етот момент мне и интересен, как dbms_lob.write проверяет

.....
stax
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771060
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxкак dbms_lob.write проверяет
Берет и пишет. А SQL engine его посылает, как показывал SY.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771085
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

табличка с одной строкой (для упрощения)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
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
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771096
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax--откуда знает что уже заблакировали?

Проверили блокировку на записи, на которую указывает локатор. Оттуда и знает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771103
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovStax--откуда знает что уже заблакировали?

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


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

.....
stax
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771116
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxкакими средствами?dbms_lob по локатору определяет роуид строки, по роуид номера файла и блока, где лежит строка. Делает дамп блока в трейс, регекспами вытаскивает из трейса заголовок строки, оттуда берет номер позиции в itl, из itl выкусывает флаг lock=1.
Или тебе прислать машинные коды oracle.exe на 400 мб?
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771132
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

спасибо

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

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

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

....
stax
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771134
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxимитировать средствами языка sql
Ммм?
Имитировать - так имитировать.
Блокировать строку, можно даже dbms_lock для большей имитационности :).
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771143
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

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

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

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

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

.....
stax
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771161
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxпроверить заблокирована ли
skip lock/time, автономка, savepoint, что-то еще
select for update nowait в автономке не сработал?
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771166
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousStaxпроверить заблокирована ли
skip lock/time, автономка, savepoint, что-то еще
select for update nowait в автономке не сработал?
не сработал
....
stax
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771168
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousselect for update nowait в автономке не сработал?Автономка с и не покажет, чья блокировка.
Нужно в текущей транзакции выполнить select for update. После этого ни if, ни exception не нужны. Блокировка есть!
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771172
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-andrey_anonymousselect for update nowait в автономке не сработал?Автономка с и не покажет, чья блокировка.
Нужно в текущей транзакции выполнить select for update. После этого ни if, ни exception не нужны. Блокировка есть!
если блокировки не было, то for update наложит

....
stax
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771279
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Автономка с и не покажет, чья блокировка.
Речь-то ведь про имитацию, а не про работу :)
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771299
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxтеперь я верю, что используется внутренний механизм

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


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

SY.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771302
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, что вмешиваюсь

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

В общем, пока тяпнитсо, пытаюсь что нибудь сообразить
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39771314
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав, думаю через:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
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.
...
Рейтинг: 0 / 0
Апдейт поля BLOB
    #39772021
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYдолжна быть произведена как можно быстро
SY.

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

.....
stax
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Апдейт поля BLOB
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]