728x90

ORA-04021 에러

문제 원인

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: 객체의 잠금 대기중 시간이 초과됐습니다"

이와 같은 에러들은 거의 다 처리 가능할 것으로 생각됩니다.

 

감사합니다~!

 

반응형

+ Recent posts