728x90
문제 원인
ORA-04021: 객체의 잠금 대기중 시간이 초과됐습니다
오라클을 사용하시다 보면 해당 에러를 종종 보실 수도 있습니다.
해당 프로시저가 돌아가는 동안에 구조를 변경할수가 없습니다. 이와같은 경우를 방지하기 위해 library lock 과 pin에 의해 lock이 걸립니다.
그러므로 해당하는 프로시저의 실행되고 있는 object 의 lock을 풀어 해결할수가 있습니다.
해결 방법
1. 오류난 해당 PRCEDURE의 SID를 추출합니다.
SELECT SID
FROM v$access
WHERE OBJECT = 'PROCEDURE 명';
2. 해당 SID의 실행중인 SESSION 점검합니다.
SELECT SID, SERIAL#, USERNAME, STATUS
FROM V$SESSION
WHERE SID = '1번에서 추출 된 SID';
3. 해당 PROCEDURE의 실행중인 SESSION 죽입니다.
ALTER SYSTEM KILL SESSION 'SID,SERIAL#';
* SESSION 을 죽여도 해결되지 않을 경우
1. SESSION에 걸린 PROCESS 추출
SELECT A.SPID
FROM V$PROCESS A
, V$SESSION B
WHERE A.ADDR = B.PADDR
AND B.SID = '1번에서 추출된 SID';
2. 서버 접속 후 실행중인 프로시저 찾기
ps -ef|grep 1번에서 추출된 SPID
3. 프로시저 죽이기
KILL -9 1번에서 추출된 SPID
위와 같이 실행해보시면
"ORA-04021: 객체의 잠금 대기중 시간이 초과됐습니다"
이와 같은 에러들은 거의 다 처리 가능할 것으로 생각됩니다.
감사합니다~!
반응형
'DB > ORACLE' 카테고리의 다른 글
[ORACLE]테이블(TABLE) 컬럼(COLUMN) Procedure, Function 검색&조회 (0) | 2021.08.10 |
---|---|
ORA-04031: unable to allocate nn bytes of shared memory (0) | 2021.06.17 |
[ORACLE] Instance & Service 용어 개념정리 (0) | 2021.06.03 |
오라클(ORACLE) 삭제(delete)하고 commit한 데이터 복구 (0) | 2021.03.26 |
프로시저(Procedure) 사용법 및 예시 (0) | 2021.03.25 |