проблема с блокировкой оракула - PullRequest
0 голосов
/ 03 февраля 2010

Это оракул 10г. Если я выпускаю обновление таблицы из sqlplus, но не фиксирую, тогда в другом сеансе обновляют ту же строку и пытаются зафиксировать, она просто зависает, пока я не фиксирую первый. Я знаю, что некоторые утверждают, что это механизм блокировки, но приложение, которое у нас есть, делает то же самое, и пользователи блокируются.

Как лучше всего избежать этой проблемы?

1 Ответ

5 голосов
/ 03 февраля 2010

Вместо того, чтобы просто пытаться обновить, вы можете выполнить блокировку с опцией NOWAIT, например,

SELECT * FROM mytable
WHERE xxx
FOR UPDATE NOWAIT;

Если строка заблокирована другим пользователем, Oracle немедленно вызовет ORA-00054: resource busy and acquire with NOWAIT specified.

...