ORA-00054: zasób zajęty i pozyskanie z podanym NOWAIT lub upłynął timeout

Dlaczego otrzymuję ten błąd bazy danych, gdy aktualizuję tabelę?

ERROR w linii 1: ORA-00054: zasób zajęty i pozyskanie z określonym NOWAIT lub upłynął timeout

Rozwiązanie

Twoja tabela jest już zablokowana przez jakieś zapytanie. Na przykład, być może wykonałeś "select for update" i nie wykonałeś jeszcze commit/rollback i nie uruchomiłeś innego zapytania select. Wykonaj commit/rollback przed wykonaniem zapytania.

Komentarze (4)

stąd https://stackoverflow.com/questions/3075738/ora-00054-resource-busy-and-acquire-with-nowait-specified

Możesz również sprawdzić informacje o sql, username, machine, port i dostać się do rzeczywistego procesu, który utrzymuje połączenie

SELECT O.OBJECT_NAME, S.SID, S.SERIAL#, P.SPID, S.PROGRAM,S.USERNAME,
S.MACHINE,S.PORT , S.LOGON_TIME,SQ.SQL_FULLTEXT 
FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S, 
V$PROCESS P, V$SQL SQ 
WHERE L.OBJECT_ID = O.OBJECT_ID 
AND L.SESSION_ID = S.SID AND S.PADDR = P.ADDR 
AND S.SQL_ADDRESS = SQ.ADDRESS;
Komentarze (5)

Twój problem wygląda na to, że mieszasz operacje DML & DDL. Zobacz ten adres URL, który wyjaśnia ten problem:

http://www.orafaq.com/forum/t/54714/2/

Komentarze (0)