ORA-00054: 리소스가 사용 중이어서 NOWAIT가 지정되었거나 시간 초과가 만료된 상태로 획득합니다.
00054. 00000 - "resource busy and acquire with NOWAIT specified"
통상적으로 해당 오류는 사용 중인 테이블에 lock이 걸린 상태에서 발생한다.
일단, commit을 실행 하는 것이 가장 간단한 해결 방법이다.
commit으로도 해결되지 않으면, 하단의 방법으로 진행하면 된다.
1명의 사용자가 사용 중인 DB에서 lock이 걸리는 경우는
주로 DML 실행 중에 비정상 종료나 정지를 시키면 발생한다.
이런 경우는 해당 session을 kill하는 것이 가장 간단하다.
# session kill
SELECT a.session_id AS SESSION_ID, b.serial# AS SERIAL_NO,
a.os_user_name AS OS_USER_NAME, a.oracle_username AS ORACLE_USERNAME, b.status AS STATUS
FROM v$locked_object a, v$session b
WHERE a.session_id = b.sid;
상단의 쿼리를 실행하여 나온 SESSION_ID와 SERIAL_NO를 하단의 쿼리에 값으로 넣어서 실행한다.
alter system kill session 'SESSION_ID,SERIAL_NO';
다수의 사용자가 하나의 DB로 작업하다가 lock이 걸리는 경우는
선행 사용자가 commit 해주면 간단히 해결되는 경우가 있다.
또한, commit으로 해결되지 않으면
상단에 작성한 session kill 방법을 이용해도 해결이 가능하다.
'Programming > DataBase' 카테고리의 다른 글
[oracle] WM_CONCAT 함수 사용하기 (1) | 2015.11.27 |
---|---|
[oracle] IN 과 NOT IN (0) | 2015.11.27 |
SELECT INSERT (0) | 2015.07.24 |
[Mysql] oracle의 START WITH CONNECT BY 구문을 mysql로 구현하기 (0) | 2015.07.07 |
[oracle] 데이터 개별 일괄 업데이트 (0) | 2015.06.17 |