개발 1도 모르는 사람

[Oracle & SQL] 오류 ORA-00054 해결법 본문

Oracle & SQL/Oracle Error Clear

[Oracle & SQL] 오류 ORA-00054 해결법

지구젤리귀여워 2023. 10. 11. 19:23
728x90

오류 ORA-00054 : 리소스가 사용 중이어서 nowait가 지정되었거나 시간 초과가 만료된 상태로 획득합니다.

 

SQL Developer 나 다른 Oracle 프로그램에서 이런 오류를 본적이 있을것이다.

아니면 지금 오류가 뜬걸 보고서 이걸 보고있거나.

 

TABLE을 CREATE 하거나 DROP할때 앞에 세션이 DML작업에서 LOCK이 걸려있어서 

실행이 되지 않고 오류가 뜬것인데 해결방법은 간단했다.

 

1. 일단 LOCK이 발생한 OBJECT를 확인한다.

 

SELECT object_id, object_type FROM dba_objects WHERE object_name='테이블명';

 

2. Lock 을 잡고 있는 세션 ID를 확인한다.

 

SELECT * FROM v$locked_object WHERE object_id= '위 1번에서나온 object_id 입력';

 

3. Lock 을 잡고 있는 세션의 Serial 번호 확인

 

SELECT sid, serial#, command, taddr FROM v$session WHERE sid='위 2번에서 나온 세션 ID 번호';

 

 

1.2.3 번을 실행하면 아래와 비슷하게 나온다.

    SID    SERIAL# USERNAME
------- ---------- ----------      
      8       8589      HBC
     17       7243      CMS
     18      25707      CMS

여기에서 2번에서 나와야할  SID 는 세션 ID번호이고

3번을 실행하면  SEREAL# 이 나온다.

이걸 받아서 마지막 4번에서 SESSION 을 KILL 해주면 된다.

 

 

4. 마지막 : 세션 강제 종료

 

 

ALTER SYSTEM KILL SESSION ' 세션 ID, Serial#번호 ' ;

 

[ ' 세션 ID , Serial# 번호 ' ; ]

필자도 처음할때 중간에 쉼표를 까먹거나 다른 경우도 있어서 잘 확인하고 Script 하길 바란다.

 

 

 

 

 

 

 

 

-참고한 블로그들

https://m.blog.naver.com/fkdltmxlr3/222356105827

 

[Oracle] 오류 ORA-00054 : 리소스가 사용 중이어서 nowait가 지정되었거나 시간 초과가 만료된 상태로

지식 출처: https://m.blog.naver.com/PostView.naver?blogId=xxsaintxx&logNo=201361...

blog.naver.com

http://www.gurubee.net/lecture/1156

 

사용자 세션의 강제 종료

  사용자가 데이터베이스에 접속해 있을 때 사용자의 세션을 강제 종료실킬 필요가 있다면 ALTER SYSTEM문을 KILL SESSION 연산자와 함께 사용하면 된..

www.gurubee.net