powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Почему deadlock?
37 сообщений из 37, показаны все 2 страниц
Почему deadlock?
    #33867562
Существует приложение, в котором удаляются записи из таблицьі Pratica.
Pratica_id - primary key.
Для удаления используется 4 job, каждьій из которьіх удаляет свои записи (множества записей, которьіе не пересекаются).

Какая может бьіть причина возникновения deadlock???

Версия - Oracle 10.2.0.2.0
Код: plaintext
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.
DEADLOCK DETECTED
[Transaction Deadlock]
Current SQL statement for this session:
DELETE FROM PRATICA A WHERE A.PRATICA_ID IN ( SELECT B.NUM_PRATICA FROM DATA_TO_LOAD B WHERE B.ID_NUM BETWEEN :B2 AND :B1 )


----- PL/SQL Call Stack -----
object line object
handle number name
7000000cce2dd60  391  package body MSCMODEL.LOAD_RAPPORTO_CA
7000000cd789e80  2  anonymous block
7000000cb6d00e0  132  package body MSCUTIL.JOB_APPLIER
7000000cb6d00e0  173  package body MSCUTIL.JOB_APPLIER
7000000cb6d00e0  206  package body MSCUTIL.JOB_APPLIER
7000000ccc8f088  2  anonymous block
Deadlock graph:

---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TX- 00170006 -0000b09b  22   137  X  24   144  S
TX- 00150000 -0000aeb5  24   144  X  23   141  S
TX-0007000c-000425f0  23   141  X  22   137  S
session  137 : DID  0001 - 0016 -0000031A session  144 : DID  0001 - 0018 -0000023F
session  144 : DID  0001 - 0018 -0000023F session  141 : DID  0001 - 0017 -000002B8
session  141 : DID  0001 - 0017 -000002B8 session  137 : DID  0001 - 0016 -0000031A
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867620
Randll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДругаяТаняКакая может бьіть причина возникновения deadlock???
Попробую предположить что bitmap index.
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867628
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с чего Вы взяли, что записи не пересекаются? Может вместо удаления к примеру писать id в лог. А потом проверить действительно ли нет пересечений...
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867629
Randll ДругаяТаняКакая может бьіть причина возникновения deadlock???
Попробую предположить что bitmap index.
Нет, не используем.
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867638
alex-lsс чего Вы взяли, что записи не пересекаются? Может вместо удаления к примеру писать id в лог. А потом проверить действительно ли нет пересечений...
потому что разбивание на куски происходит по первичному ключу таким образом 1-5000, 5001-10000, 10001-15000 и т.д.
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867667
AlAndreev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А initrans и pctfree у таблицы PRACTICA и ее индексов какой???
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867673
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
When a table's INITRANS is set too low , the block is full with data, and
there are many concurrent DML's occurring on rows within the block, one may
see a Share Lock being requested when doing a DML. To my knowledge, this
is only time we grab the SHARED lock. Instead of waiting for a lock, this
process is waiting for some extra space or a release of an INITRANS within
the transaction layer of the block.
See Note 62354.1 TX Transaction locks - Example wait scenarios
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867680
AlAndreevА initrans и pctfree у таблицы PRACTICA и ее индексов какой???
У таблицьі:
initrans = 2
pctfree=10
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867695
ДругаяТаня AlAndreevА initrans и pctfree у таблицы PRACTICA и ее индексов какой???
У таблицьі:
initrans = 2
pctfree=10

Т.е. стоит увеличить initrans? А какое значение установить?
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867702
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из того, что ID_NUM разбито на непересекающиеся диапазоны, в общем случае не следует, что NUM_PRATICA придерживается того же разбиения.
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867741
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerИз того, что ID_NUM разбито на непересекающиеся диапазоны, в общем случае не следует, что NUM_PRATICA придерживается того же разбиения.
то, что разбиение не виновато следует из типа блокировки - SHARED (S)
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867752
Фотография Ааз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DВАTo my knowledge, this is only time we grab the SHARED lock.Ната, откуда дровишки? Стив Адамс знает 4 случая :-)

Всего
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867760
softwarerИз того, что ID_NUM разбито на непересекающиеся диапазоны, в общем случае не следует, что NUM_PRATICA придерживается того же разбиения.
Да, конечно, в общем случае не следует. Но тут логика такая, что NUM_PRATICA в таблице data_to_load - единственное значение.
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867801
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ааз DВАTo my knowledge, this is only time we grab the SHARED lock.Ната, откуда дровишки? Стив Адамс знает 4 случая :-)

Всего
цитата :)

а в общем случае, например, SRX!=S, ну или Адамс знает больше, чем металинк готов признать ;)
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867850
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пять
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867867
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ааз DВАTo my knowledge, this is only time we grab the SHARED lock.Ната, откуда дровишки? Стив Адамс знает 4 случая :-)
Всего
Other Scenarios
~~~~~~~~~~~~~~~
There are other wait scenarios which can result in a SHARE mode wait for a TX
lock but these are rare compared to the examples given above.
Eg: If a session wants to read a row locked by a transaction in a PREPARED
state then it will wait on the relevant TX lock in SHARE mode (REQUEST=4).
As a PREPARED transaction should COMMIT , ROLLBACK or go to an in-doubt
state very soon after the prepare this is not generally noticeable..

--------------------------------------------------------------------------
раз уж заинтриговали, оч хочется узнать, что к этому может добавить Адамс :)
плиз...
:)
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867869
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я и ёжикпять
кто даст больше?
...
Рейтинг: 0 / 0
Почему deadlock?
    #33867902
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Ожидание разрешения Unique или Primary key ограничения.
2) Ожидание освобождения ITL-слота в блоке.
3) Ожидание освобождения фрагмента BITMAP индекса
4) Ожидание освобождения блокировки Main Free Lists сегмента при возврате блоков из TFL.
5) Ожидания чтения строки которая заблокирована транзакцией в prepared состоянии (распределенные транзакции)).
...
Рейтинг: 0 / 0
Почему deadlock?
    #33868051
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я и ёжик1) Ожидание разрешения Unique или Primary key ограничения.
2) Ожидание освобождения ITL-слота в блоке.
3) Ожидание освобождения фрагмента BITMAP индекса
4) Ожидание освобождения блокировки Main Free Lists сегмента при возврате блоков из TFL.
5) Ожидания чтения строки которая заблокирована транзакцией в prepared состоянии (распределенные транзакции)).
спасиб. про пункт 4 не знала :)
...
Рейтинг: 0 / 0
Почему deadlock?
    #33868077
Фотография Ааз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я не знал про пункт 5. Спасибо Ёжик :-)

Всего
...
Рейтинг: 0 / 0
Почему deadlock?
    #33868096
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АазА я не знал про пункт 5. Спасибо Ёжик :-)
Засыпал раньше чем дочитывал ноту 62354.1 до конца? ;)
...
Рейтинг: 0 / 0
Почему deadlock?
    #33868136
Фотография Ааз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я и ёжикЗасыпал раньше чем дочитывал ноту 62354.1 до конца? ;)В практике не встречал, вот, видимо, и не отложилось. Про 4-й пункт от Стива на его семинаре узнал (действительно экзотика, хотя тест-кеКс Стив демонстрировал).

Всего
...
Рейтинг: 0 / 0
Почему deadlock?
    #34032723
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут у Kyle Hayley встретил упоминание 6 случая

Kyle Hayley 'Waits Defined'
Difficult – uses modifying different data
1)ITL
2)Unique Key
3)Bitmap Index

Rare
4)Read only Tablespace
5)Free Lists
6)Two phase commit

Вот про 4) кто ни будь может, что сказать, что имеется ввиду?

Andrei Kiselev
--
The views expressed are my own and not necessarily those of my hedgehog
...
Рейтинг: 0 / 0
Почему deadlock?
    #34032797
Я и ёжик

Вот про 4) кто ни будь может, что сказать, что имеется ввиду?
Возможно это:

Session 1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> create table t(n number) tablespace sample;
 
Table created.
 
SQL> insert into t values( 1 );
 
 1  row created.

SQL>
Session 2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> select sid from v$mystat where rownum= 1 ;
 
       SID
----------
         11 
 
SQL> alter tablespace users read only;
-- висим, причем пофиг, какое TS переводили в read only - users или sample
 
Session 1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> select sid,type,lmode,request from v$lock where sid= 11 ;
 
       SID TY      LMODE    REQUEST
---------- -- ---------- ----------
         11  TX           6            0 
         11  TX           0            4 
         11  TT           5            0 
         11  AT           6            0 
         11  IS           4            0 
 
SQL>
...
Рейтинг: 0 / 0
Почему deadlock?
    #34032819
kapelan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
any trigger on the table?
Pimary/foreign key?
...
Рейтинг: 0 / 0
Почему deadlock?
    #34032838
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Орхидей Лавандович
Thanks!
...
Рейтинг: 0 / 0
Почему deadlock?
    #34032840
Фотография Я и ёжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kapelanany trigger on the table?
Pimary/foreign key?
Хто здесь? ;)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Почему deadlock?
    #39724620
Yoab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я и ёжик,

4) Ожидание освобождения блокировки Main Free Lists сегмента при возврате блоков из TFL.

А можно поподробнее про этот случай - у меня такая же ситуация, как у автора, но в моём случае это точно не битмап индекс и не вставка прим_кей/уник. ITL врятли - оракл 11-ый. Вот хочется кейс № 4 поподробнее узнать.

В заранее спасибо
...
Рейтинг: 0 / 0
Почему deadlock?
    #39724749
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это как раз ITL пофиг, какая версия. Если в блоке не осталось места, то не важно, что там у тебя в MAXTRANS указано
А вот использование Freelists в 11g достаточно необычно
...
Рейтинг: 0 / 0
Почему deadlock?
    #39725340
Yoab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,
Всё равно не похоже

С эмулировал ситуацию ITL Deadlock'a на тестовом серваке

Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TX-0007000c-00000c84 30 29 X 77 158 S
TX-001c0013-00000072 77 158 X 23 163 S
TX-00130005-00000078 23 163 X 74 36 S
TX-001d0006-00000076 74 36 X 30 29 S

session 29: DID 0001-001E-0000010D session 158: DID 0001-004D-00000042
session 158: DID 0001-004D-00000042 session 163: DID 0001-0017-000006B3
session 163: DID 0001-0017-000006B3 session 36: DID 0001-004A-00000042
session 36: DID 0001-004A-00000042 session 29: DID 0001-001E-0000010D

Rows waited on:
Session 29: no row
Session 158: no row
Session 163: no row
Session 36: no row


Rows waited on Пустой.

Дамп снятый с промышленного сервера в закладке Rows waited on содержит строки

Это завело меня в тупик...
...
Рейтинг: 0 / 0
Почему deadlock?
    #39725425
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А информации о выполняющихся операторах нет?
...
Рейтинг: 0 / 0
Почему deadlock?
    #39725457
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yoab Rows waited on Пустой.А в itl contention не может быть конкретного row.
...
Рейтинг: 0 / 0
Почему deadlock?
    #39725489
Yoab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

Во всех сессиях
Select 1 into i from tableA t where t.id=:B1 for update wait 1;
...
Рейтинг: 0 / 0
Почему deadlock?
    #39725581
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YoabДамп снятый с промышленного сервера в закладке Rows waited on содержит строкиУ дедлока есть основная 0-вая причина, описанная во первых строках трассы.
...
Рейтинг: 0 / 0
Почему deadlock?
    #39725783
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicYoab Rows waited on Пустой.А в itl contention не может быть конкретного row.
У дедлока в основе не менее двух блокировок, и они не обязаны быть одного типа.
Потому в графе с itl contention могут спокойно располагаться и строчные.
...
Рейтинг: 0 / 0
Почему deadlock?
    #39725835
Yoab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicYoabДамп снятый с промышленного сервера в закладке Rows waited on содержит строкиУ дедлока есть основная 0-вая причина, описанная во первых строках трассы.

Не понял, можно поподробнее
...
Рейтинг: 0 / 0
Почему deadlock?
    #39725855
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YoabElicУ дедлока есть основная 0-вая причина, описанная во первых строках трассы.Не понял, можно поподробнее*.trc
Код: plaintext
1.
2.
3.
The following deadlock is not an ORACLE error. It is a
deadlock due to user error in the design of an application
or from issuing incorrect ad-hoc SQL.
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Почему deadlock?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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