Повторная попытка взаимоблокировок в цикле, они в конечном итоге разрешатся? - PullRequest
2 голосов
/ 21 октября 2011

Если я напишу код в функции PL / SQL, который при обнаружении исключения тупиковой ситуации ORA-00060 (Oracle 10g) просто откатывается и повторяет транзакцию, такая функция завершится за конечное время (вы можетепредположим, что работа, выполняемая базой данных, является конечной, а не бесконечным потоком)?

Есть ли какая-то конкретная причина, по которой мне следует добавить ожидание перед повторной попыткой?

1 Ответ

1 голос
/ 21 октября 2011

В общем, это зависит от того, что делают другие транзакции в системе, особенно другие, участвующие в тупике.Вы можете столкнуться с ситуацией, когда вторая попытка блокируется на неопределенный срок из-за заблокированных ресурсов или даже может встретиться со второй тупиковой ситуацией.

По крайней мере, прежде чем приступить к реализации этого решения, я думаю, вы должны понимать, как возникает тупиковая ситуацияи подумайте, что может произойти в других сеансах, когда первый сеанс получает исключение.

...