Удалить тупик, не убивая сессию - PullRequest
1 голос
/ 28 ноября 2009

Есть ли обходной путь для устранения тупика без прерывания сеанса?

Ответы [ 3 ]

6 голосов
/ 28 ноября 2009

Из Руководства по понятиям :

Oracle автоматически обнаруживает ситуации взаимоблокировки и разрешает их путем отката одного из операторов, участвующих в взаимоблокировке, освобождая тем самым один набор конфликтующих блокировок строк.

Вам не нужно ничего делать, чтобы удалить тупик, Oracle позаботится об этом автоматически. Сеанс не прерывается, он возвращается к точке непосредственно перед оператором триггера. На другой сеанс это не влияет (т. Е. Он все еще ожидает блокировки, пока откат отката не завершит или не откатит свою транзакцию).

В большинстве случаев взаимоблокировки должны быть исключительно редкими. Вы можете предотвратить все взаимоблокировки, используя операторы FOR UPDATE NOWAIT вместо FOR UPDATE.

Смотри также

Обсуждение удаления тупика на AskTom

1 голос
/ 28 ноября 2009

В Oracle мертвые блокировки автоматически удаляются путем отмены одного из заблокированных операторов. Вам не нужно делать это вручную. Одна из сессий получит «ORA-00060», и она должна решить, следует ли повторить попытку или выполнить откат.

Но из вашего описания похоже, что у вас есть блок, а не тупик.

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

0 голосов
/ 30 июня 2011

Нет, Oracle 10g, по-видимому, на практике не разрешает взаимоблокировки автоматически. У нас были сделки, и мы должны были очистить сессии вручную.

Эта страница может помочь определить, есть ли у вас тупики Определение и устранение тупика Oracle ITL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...