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

Откуда: Хабаровск
Сообщений: 134
Есть таблица с 2-мя полями и двумя записями:
F1 F2
1 ‘первая’
2 ‘вторая’

Ситуация номер 1:
Сессия № 1:
update table test1 set f2=’тест’ where а1=1;

нет коммита

Сессия № 3:
[quote автор]update table test1 set f2=’тест2’ where f1=2;[/quote]


Никаких ожиданий, никаких блокировок.


Ситуация номер 2:
Сессия № 1:
update table set f2=’тест’ where f1=1;

нет коммита

Сессия № 2:
Alter session set ddl_lock_timeout = 1000;
ALTER TABLE test1 ADD SUPPLEMENTAL LOG GROUP test1(f1);

Висит на ожидании, т.к. строка в таблице блокирована сессией №1.

Сессия номер 3:
update table test1 set f2=’тест2’ where f1=2;


И тоже висит на ожидании, ждет сессию № 2, хотя сессия № 2 еще не исполняет никаких действий над таблицей, и не получила
никакой блокировки на таблицу, она только собирается это сделать, но тем не менее все сессии после нее ведут себя так,
как будто сессия номер два уже блокировала таблицу.
8 апр 13, 09:08    [14149543]     Ответить | Цитировать Сообщить модератору
 Re: осторожнее с ddl_lock_timeout  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18482
Блокировки -- это очередь (enqueue)
8 апр 13, 09:15    [14149562]     Ответить | Цитировать Сообщить модератору
 Re: осторожнее с ddl_lock_timeout  [new]
OlleUp
Member

Откуда: Хабаровск
Сообщений: 134
Странно то, что сессия становится в очередь с намерениями установить такую-то блокировку, а все остальные ведут себя так, как будто она уже установлена.

Несколько нелогичное поведение.

Ожидается, что ты запустил alter в ожидание и спокойно ждешь, когда представится возможность и alter будет выполнен.
Совсем не ожидаешь того, что работа всех остальных в это время становится колом.
8 апр 13, 09:22    [14149582]     Ответить | Цитировать Сообщить модератору
 Re: осторожнее с ddl_lock_timeout  [new]
-2-
Member

Откуда:
Сообщений: 15330
OlleUp
Несколько нелогичное поведение.
представь, что ты встал в очередь и тебе нужно X, а всё идут и идут "мне только Y".
8 апр 13, 09:26    [14149590]     Ответить | Цитировать Сообщить модератору
 Re: осторожнее с ddl_lock_timeout  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18482
ALTER пытается установить exclusive TM блокировку на изменение структуры таблички
Ждет
Сессия пытается прочитать/изменить данные этой таблички. Она должны быть уверена, что опредение таблички не изменится в процессе опроса
8 апр 13, 09:27    [14149594]     Ответить | Цитировать Сообщить модератору
 Re: осторожнее с ddl_lock_timeout  [new]
OlleUp
Member

Откуда: Хабаровск
Сообщений: 134
:)
Я понимаю.
Я ожидал другой реализации ddl_lock_timeout.
Это когда сессия пытается, ну скажем, 10 раз в секунду выполнить действие, а если не получилось - засыпает. И так на протяжении указанного времени.

А при текущей реализации толку от ddl_lock_timeout немного.
8 апр 13, 09:29    [14149602]     Ответить | Цитировать Сообщить модератору
 Re: осторожнее с ddl_lock_timeout  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
OlleUp
:)
Я понимаю.
Я ожидал другой реализации ddl_lock_timeout.
Это когда сессия пытается, ну скажем, 10 раз в секунду выполнить действие, а если не получилось - засыпает. И так на протяжении указанного времени.

А при текущей реализации толку от ddl_lock_timeout немного.
Толку в предложенном алгоритме немного, т.к. он легко реализуется самостоятельно и не гарантирует выполнения DDL при снятии блокировок мешающих выполнению DDL в указанное время.
8 апр 13, 09:35    [14149613]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить