2010-02-03 5 views
0

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

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

+0

Нет аргументов. Это * - механизм блокировки. – APC

ответ

5

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

SELECT * FROM mytable 
WHERE xxx 
FOR UPDATE NOWAIT; 

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