Size: a a a

2021 December 13

Z

ZhekaPPP in Oracle RU
источник

И

Илья in Oracle RU
сейчас узнаю, не я делал, но скорее всего...
источник

И

Илья in Oracle RU
ну есть, то есть, я тестил  - не воспроизводилось)  правда на тестовом стенде данных гигов на 100 поменьше будет
источник

KL

Kirill Leontev in Oracle RU
дело не в гигах, дедлок ловится на таблице в две строчки.
источник

x

xtender in Oracle RU
На гигах легче поймать)
источник

И

Илья in Oracle RU
а, понятно
источник

И

Илья in Oracle RU
😅
источник

x

xtender in Oracle RU
Увеличение времени транзакции логично что чаще приводит к выявлению ошибок проектирования
источник

KL

Kirill Leontev in Oracle RU
я имел в виду принципиально можно :) так-то да, логично что чем длиннее транзакция тем выше шанс что их будет две одновременно.
источник

Z

ZhekaPPP in Oracle RU
там под deadlock на сервере формируется довольно подробный файлик трейса (его имя можно найти в alert.log базы). В нем видно, на каких строчках таблицы это произошло (есть rowid), видны текущие sql обоих сессий, pl/sql call stack и т.п
источник

И

Илья in Oracle RU
да это видел) не один раз) надо просто проверку какую-то в коде делать) дождаться пока транзакция выполнится
источник

KL

Kirill Leontev in Oracle RU
в раке при cross instance дедлоках в оба (все) алерта запишется?
источник

И

Илья in Oracle RU
не знаете, каким образом можно проверить, что предыдущая транзакция завершилась?
источник

KL

Kirill Leontev in Oracle RU
надо не проверку в коде а обновлять данные в одном и том же порядке. тогда код будет дожидаться сам без проверок
источник

И

Илья in Oracle RU
запросик какой-нить в БД отправить и получить true или false
источник

x

xtender in Oracle RU
Предыдущая? В своей сессии?
источник

x

xtender in Oracle RU
Если да то легко по transaction_id - если пусто то нет активной (можно сложнее через v$transaction - там будет более точно)
источник

М

Миxаuл in Oracle RU
И откуда ей знать что это дедлок?
Любая сессия может знать о любых блокировках других сессий?
источник

И

Илья in Oracle RU
этонеточно))
источник

Z

ZhekaPPP in Oracle RU
в RAC есть отдельный процесс, называется lmd. Там дедлоки в его трейс пишутся. Только на той ноде, где сессия получила ORA-60. Но в трейсах lmd, к сожалению, гораздо меньше информации, нет rowid, например. Поэтому на RAC сложнее с причинами deadlock разбираться
источник