а если копнуть глубже, что там происходит? ну вот мы делаем update.
прочитали блок. нашли строку. записали себя в ITL блока. попытались изменить строку, нашли transaction id, которая ее поменяла, транзакция еще активна.
дальше наш апдейт через recursive sql по transaction id находит блокирующую сессию и обходит граф блокировок, чтобы проверить, нет ли в нем самого себя?