ORA-01940: 현재 접속되어 있는 사용자는 삭제할 수 없습니다 (ORA-01940: cannot drop a user that is currently connected)

ORA-01940: 현재 접속되어 있는 사용자는 삭제할 수 없습니다오류는 삭제를 시도하려는 대상 사용자의 세션이 활성화되어 있는 경우에 발생합니다. 즉, 해당 사용자가 현재 연결이 활성 상태이기 때문에 발생하는 문제입니다.

오라클 데이터베이스는 삭제하려는 사용자가 연결되어 있는 상태일 때, 해당 오류와 함께 실행이 실패합니다. 이유는 사용자가 활성화되어 있는데도 삭제가 가능하다면, 데이터 손실 또는 예기치 않은 문제가 발생할 가능성을 염두한 것으로 보입니다. 더불어 사용자 삭제는 일반적으로 발생하는 이벤트는 아니므로 문제를 사전에 방지하려는 의도로 보입니다.

ORA-01940: 현재 접속되어 있는 사용자는 삭제할 수 없습니다

해당 오류를 수정하려면 세션을 종료하고 삭제를 시도하여야 합니다.

  • 해당 사용자의 데이터베이스 연결을 종료하도록 공지하는 방법
  • 해당 세션을 강제로 종료하고 사용자를 삭제하는 방법

다음은 세션 확인 및 강제 종료 예제자료입니다.

현재 접속되어 있는 사용자 세션 조회하기

다음의 명령어는 활성화된 세션의 세션 아이디(SID)와 일련번호(serial number)를 조회하는 방법입니다. 예제의 세션 아이디는 1, 시리얼은 2로 가정하겠습니다.

SELECT SID, SERIAL#
  FROM V$SESSION
 WHERE USERNAME = 'USER_NAME';
 
SID SERIAL#
-----------
1 2

현재 접속되어 있는 사용자 세션 종료하기

세션 아이디와 시리얼로 세션을 강제로 종료하는 명령어는 다음과 같습니다. 아까 조회한 자료를 기준으로 하면 sid에는 1, serial#에는 2를 입력하여 종료할 수 있습니다. 종료가 완료되면 활성 세션이 없기에 ORA-01940: cannot drop a user that is currently connected 오류 없이 사용자를 삭제할 수 있게 됩니다.

ALTER SYSTEM KILL SESSION 'sid, serial#';
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗