Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 непонятный deadlock  [new]
Nikolay****
Member

Откуда:
Сообщений: 223
Добрый день. Есть таблица с уникальным полем. В двух разных сессиях вставляю строку с одинаковым значением уникального ключа.
Первая сессия продолжает работать, вторая по понятным причинам лочится.
Далее в первой сессии удаляю вставленную строку и получаю deadlock. Ожидал, что отвиснет вторая сессия и пройдет вставка.


Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TM-0002c173-00000000 29 72 SX 26 139 SX SSX
TX-0005001b-0000fa68 26 139 X 29 72 S

session 72: DID 0001-001D-0000A12A session 139: DID 0001-001A-00002AD7
session 139: DID 0001-001A-00002AD7 session 72: DID 0001-001D-0000A12A

Rows waited on:
Session 72: no row
Session 139: no row
5 фев 14, 11:56    [15521373]     Ответить | Цитировать Сообщить модератору
 Re: непонятный deadlock  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
версия БД.
На 11,2,0,3 не воспроизводится.
5 фев 14, 12:13    [15521544]     Ответить | Цитировать Сообщить модератору
 Re: непонятный deadlock  [new]
-2-
Member

Откуда:
Сообщений: 15330
pravednik
версия БД.
На 11,2,0,3 не воспроизводится.
Вероятнее дойти до истины, начав с индексов, триггеров, ...
5 фев 14, 12:16    [15521585]     Ответить | Цитировать Сообщить модератору
 Re: непонятный deadlock  [new]
Nikolay****
Member

Откуда:
Сообщений: 223
-2-, Триггеров в схеме вообще нет. Индексы по внешним ключам присутствуют.
5 фев 14, 12:40    [15521826]     Ответить | Цитировать Сообщить модератору
 Re: непонятный deadlock  [new]
Nikolay****
Member

Откуда:
Сообщений: 223
pravednik, У меня версия 11.2.0.1. Да, проблема видно конкретно с этой таблице. Уже второй день ломаю голову что с ней не так.
5 фев 14, 12:49    [15521892]     Ответить | Цитировать Сообщить модератору
 Re: непонятный deadlock  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
И всё-таки поищи неиндексированный ключ тут:
select owner, object_name from dba_objects where object_id = to_number('0002c173', 'xxxxxxxx');
5 фев 14, 12:50    [15521913]     Ответить | Цитировать Сообщить модератору
 Re: непонятный deadlock  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Deadlock
5 фев 14, 12:54    [15521943]     Ответить | Цитировать Сообщить модератору
 Re: непонятный deadlock  [new]
ееуекцукцу
Guest
_Nikotin
И всё-таки поищи неиндексированный ключ тут:
select owner, object_name from dba_objects where object_id = to_number('0002c173', 'xxxxxxxx');

Как раз индексированные внешние ключи и могут приводить к deadlock
5 фев 14, 12:59    [15521996]     Ответить | Цитировать Сообщить модератору
 Re: непонятный deadlock  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
ееуекцукцу
Как раз индексированные внешние ключи и могут приводить к deadlock
Дай пруфлинк или пример что ли?
5 фев 14, 13:03    [15522044]     Ответить | Цитировать Сообщить модератору
 Re: непонятный deadlock  [new]
ееуекцукцу
Guest
_Nikotin
ееуекцукцу
Как раз индексированные внешние ключи и могут приводить к deadlock
Дай пруфлинк или пример что ли?

Да держи
+
create table test_master( id number primary key );
create table test_child( id number primary key, master_id number, text varchar2(100),
constraint fk_test_child foreign key (master_id) references test_master (id) );
create index idx_test_child on test_child(master_id);

--1 session
insert into test_master( id ) values( 1 );
commit;

--2 session
insert into test_child( id, master_id, text ) values ( 1, 1, 'test1' );

--1 session
delete from test_master where id = 1;
--> blocking

--2 session
insert into test_child( id, master_id, text ) values ( 2, 1, 'test2' );
5 фев 14, 13:05    [15522056]     Ответить | Цитировать Сообщить модератору
 Re: непонятный deadlock  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Но только с индексом не будет SX SSX.
5 фев 14, 13:17    [15522156]     Ответить | Цитировать Сообщить модератору
 Re: непонятный deadlock  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
ееуекцукцу,

А, в этом плане, согласен. Но тут граф несколько другой будет:
TX-008c0009-00000002        32    1022     X             33    1150           S
TX-007c0007-00000002        33    1150     X             32    1022           S
5 фев 14, 13:17    [15522157]     Ответить | Цитировать Сообщить модератору
 Re: непонятный deadlock  [new]
Nikolay****
Member

Откуда:
Сообщений: 223
_Nikotin, Да действительно нашлась дочерняя таблица без индекса по внешнему ключу. Ошибка исчезла.
5 фев 14, 13:19    [15522173]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить