본문 바로가기
Database/오라클 (Oracle)

ORACLE #2 - USER (사용자) DROP Error 해결 법

by ★√★ 2021. 2. 20.

 안녕하세요, Davey 입니다. 오늘은 포스팅 할 내용은 Oracle DB 사용자를 Drop 시킬려고 하는데, Drop이 안되는 Error 발생 시 해결하는 방법에 대해서 포스팅 하려고 합니다. 일단 해결 방법에 앞서, User(사용자) Drop 하는 방법 부터 말씀 드리도록 하겠습니다.  이 전에 포스팅한 내용도 참조하시라고 같이 첨부하도록 하겠습니다. 

 

 

 

1. User (사용자) Drop 하는 방법 


: User (사용자) Drop (삭제) 하는 방법에 대해서는 이 전 포스팅에서 자세히 설명을 해 드렸습니다. 참조하시라고, 아래에 Link 첨부 하도록 하겠습니다. 2번 사항으로 넘어가시기 전에 아래와 Link 참조하여 사전 지식을 습득하시는 걸 추천 드립니다. 

LINK - [ORACLE #1 – Oracle 사용자(User) 생성(Create) 및 삭제(Drop) 하는 방법]

 

2.  User (사용자) Drop 시 Drop이 안된다라는 Error 발생 


: 1번에 설명 드린 내용 처럼 User (사용자)를 Drop 시키려고 할 때, 보통은 정상적으로 Drop이 되지만, 간혹 DB 내부적인 이유로 아래와 같은 Error 메세지가 발생할 수 있습니다.  

 [Error 메세지] ORA-01940: 현재 접속되어 있는 사용자는 삭제할 수 없습니다 

- 이럴 경우에는 현재 그 사용자의 Status를 먼저 조회를 하시고, 현재 운용되는 Status를 Kill 하고, 삭제를 하셔야 합니다. 조회 및  Kill을 하는 명령어는 아래와 같습니다.  

1) SELECT SID,SERIAL#,USERNAME,STATUS FROM V$SESSION WHERE SCHEMANAME='사용자명'; 
2) ALTER SYSTEM KILL SESSION '조회된SID,조회된SERIAL#' IMMEDIATE; 

- 쉬운 이해를 돕기 위해 User를 "Davey" 라고, 일단 간주하고, 명령어 실행하는 방법에 대해서 설명 드리도록 하겠습니다.  

예) "Davey" 라는 사용자를 드롭하는 경우 

Step #1 명령어 실행  
- SELECT SID,SERIAL#,USERNAME,STATUS FROM V$SESSION WHERE SCHEMANAME='Davey'; 

Step #2 명령어 실행 후 조회 결과 검토

 

[조회결과]

SID SERIAL USERNAME STATUS
123 4567 DAVEY INACTIVE

  
Step #3 조회 결과 Value을 이용하여, User Status Kill 하기 

- ALTER SYSTEM KILL SESSION '123 ,4567' IMMEDIATE; 

Step #4 Cascade가 포함된 User (사용자) Drop (삭제) 명령어 실행 
- DROP USER Davey CASCADE; 


 이상입니다. 정말 간단한 거 처럼 보이지만, 정작 모를 때는 너무 나도 많은 시간이 걸린다는 걸 요즘에는 매일 매일 느끼고 있습니다. 프로그래밍이나 DB에 대한 Study는 정말 시간이 많이 필요한 시간이며, 인내심이 많이 필요한 작업인 거 같습니다. 같이 공부하고, 도와가면서, 같이 성장하시죠! 감사합니다.

 

 제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다. 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

728x90

댓글