ORA-01922: 사용자(을)를 삭제하려면 CASCADE를 지정하여야 합니다 (ORA-01922: CASCADE must be specified to drop USER)

ORA-01922: 사용자(을)를 삭제하려면 CASCADE를 지정하여야 합니다 오류는 사용자(또는 스키마)를 삭제하는 것과 관련이 있습니다. 이 오류는 사용자 삭제를 시도할 때, 종속 객체가 여전히 남아있는 경우에 발생합니다. 종속 객체는 해당 사용자와 연관된 데이터베이스 스키마를 뜻하며, 테이블, 뷰, 프로시저, 펑션, 시퀀스, 트리거, 패키지 등이 있습니다. 

간단히 예를 들면, 삭제하려는 사용자에 여전히 테이블이 남아있는데도, 사용자를 삭제하려고 시도한 것이지요.

ORA-01922: 사용자(을)를 삭제하려면 CASCADE를 지정하여야 합니다

종속객체 확인하기

삭제하기 전에 어떠한 스키마가 있는지 확인하는 방법입니다. 스키마에서 접근 가능한 딕셔너리뷰를 참조하겠습니다.

SELECT OBJECT_TYPE, OBJECT_NAME
       FROM ALL_OBJECTS
      WHERE OWNER = 'USERNAME';

OBJECT_TYPE OBJECT_NAME
--------------------------------------
SEQUENCE SEQUENCE_NAME

CASCADE 설정하기

사용자를 삭제하면서 동시에 모든 종속객체를 삭제하려면, DROP문과 함께 CASCADE 키워드를 추가해 주세요. CASCADE 키워드는 종속의 뜻을 가지고 있으며, 폭포처럼 물이 떨어져 내리는 것을 의미하고, 위에서부터 계단식으로 내려오는 순차적 정보전달을 내포합니다. 오라클뿐만 아니라 여러 개발언어에서 자주 사용되는 단어이니 익혀두시면 좋습니다. CASCADE 키워드를 사용하면 위에서 언급한 바와 같이 모든 종속객체가 연쇄적으로 삭제되니 사용할 때 주의해 주세요.

DROP USER USER_NAME CASCADE;

--ORA-01940: cannot drop a user that is currently connected
DROP USER USER_NAME;
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗