2026년 10월 12일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-65011 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-65011 Pluggable database does not exist 는?
ORA-65011 에러는 Oracle Multitenant 환경(CDB, Container Database)에서 존재하지 않거나 잘못된 이름의 Pluggable Database(PDB)를 참조하려 할 때 발생하는 에러입니다. 주로 ALTER PLUGGABLE DATABASE, DROP PLUGGABLE DATABASE, 또는 PDB에 접속하는 SQL 명령 수행 시 해당 PDB 이름이 데이터 딕셔너리에 존재하지 않을 경우 발생합니다. Oracle 12c 이후 Multitenant 아키텍처가 도입된 이후 DBA들이 자주 마주치는 에러 중 하나로, PDB 이름의 오탈자나 비정상 종료 후 PDB 상태 불일치 시에도 나타날 수 있습니다.
주요 발생 원인
- 존재하지 않거나 잘못된 PDB 이름 참조
가장 흔한 원인으로, PDB 이름을 잘못 입력하거나 오탈자가 있는 경우입니다. Oracle은 PDB 이름의 대소문자를 구분하지 않지만, 실제 등록된 이름과 완전히 다른 이름을 입력했을 때 이 에러가 발생합니다. 예를 들어 MYPDB 대신 MY_PDB로 입력하거나, 이미 삭제된 PDB를 참조할 때도 동일한 에러가 발생합니다.
- PDB가 CDB에서 unplug 또는 drop된 후 재참조
PDB를 UNPLUG 또는 DROP 명령으로 제거한 이후에도 스크립트나 애플리케이션 설정에 기존 PDB 이름이 남아 있어 다시 참조하는 경우입니다. 특히 자동화된 배포 스크립트나 모니터링 툴에서 하드코딩된 PDB 이름을 사용하는 경우 이 문제가 빈번하게 발생합니다. UNPLUG 후 해당 PDB는 CDB의 데이터 딕셔너리에서 제거되므로, 동일한 이름으로 접근하면 ORA-65011이 발생합니다.
- CDB 재시작 또는 PDB 비정상 종료 후 상태 불일치
CDB 또는 PDB가 비정상적으로 종료된 이후, PDB가 MOUNTED 또는 RESTRICTED 상태에 머물거나 내부적으로 인식 불가 상태가 되어 일부 명령에서 ORA-65011처럼 보이는 동작이 발생하기도 합니다. 특히 Oracle RAC(Real Application Clusters) 환경에서 노드 간 PDB 상태 동기화가 되지 않았을 때 이 에러가 함께 나타날 수 있습니다. 이 경우 V$PDBS 뷰를 통해 현재 PDB 상태를 반드시 먼저 확인해야 합니다.
해결 방법
1. 현재 CDB에 존재하는 PDB 목록 확인
가장 먼저 CDB$ROOT에서 SYS 또는 SYSDBA 권한으로 현재 등록된 PDB 목록을 조회합니다.
-- CDB에 접속된 상태에서 전체 PDB 목록 조회
SELECT CON_ID, NAME, OPEN_MODE, RESTRICTED, STATUS
FROM V$PDBS
ORDER BY CON_ID;
-- 데이터 딕셔너리에서 PDB 정보 추가 조회
SELECT PDB_ID, PDB_NAME, STATUS, CON_UID
FROM CDB_PDBS
ORDER BY PDB_ID;
위 쿼리를 통해 실제로 존재하는 PDB 이름과 현재 상태를 먼저 확인합니다. 자신이 참조하려는 PDB 이름이 목록에 없다면, 이름 오탈자 또는 이미 삭제된 PDB임을 확인할 수 있습니다.
2. 잘못된 PDB 이름 오탈자 수정
PDB 이름이 잘못된 경우, 정확한 이름으로 수정하여 명령을 재실행합니다.
-- 잘못된 이름으로 인한 에러 발생 예시
ALTER PLUGGABLE DATABASE MY_PDB OPEN;
-- ORA-65011: Pluggable database MY_PDB does not exist
-- V$PDBS에서 정확한 이름 확인 후 재실행
ALTER PLUGGABLE DATABASE MYPDB OPEN;
-- PDB에 직접 접속할 때도 정확한 서비스 이름 사용
CONNECT system/oracle@//localhost:1521/MYPDB
3. unplug된 PDB 재등록 (plug-in)
이미 unplug된 PDB를 다시 사용해야 한다면, .xml 메타데이터 파일을 이용해 다시 plug-in합니다.
-- unplug된 PDB의 XML 파일을 이용해 재등록
CREATE PLUGGABLE DATABASE MYPDB
USING '/u01/app/oracle/oradata/MYPDB/mypdb.xml'
COPY
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/MYPDB/',
'/u01/app/oracle/oradata/CDB1/MYPDB/');
-- PDB 등록 후 OPEN
ALTER PLUGGABLE DATABASE MYPDB OPEN;
-- OPEN 후 상태 재확인
SELECT NAME, OPEN_MODE FROM V$PDBS WHERE NAME = 'MYPDB';
4. PDB 상태 이상 시 강제 복구
PDB가 데이터 딕셔너리에는 존재하지만 MOUNTED 또는 비정상 상태인 경우, 아래와 같이 강제로 OPEN합니다.
-- PDB 상태 확인
SELECT NAME, OPEN_MODE, RESTRICTED FROM V$PDBS;
-- RESTRICTED 모드로 OPEN하여 내부 점검
ALTER PLUGGABLE DATABASE MYPDB OPEN RESTRICTED;
-- 정상화 후 일반 OPEN으로 전환
ALTER PLUGGABLE DATABASE MYPDB CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE MYPDB OPEN;
-- CDB 재시작 후 자동으로 PDB를 OPEN 상태로 유지하려면
ALTER PLUGGABLE DATABASE MYPDB SAVE STATE;
예방 방법
- PDB 이름 목록 관리 및 자동화 스크립트 점검
운영 환경에서는 현재 유효한 PDB 목록을 별도의 CMDB 또는 운영 문서로 관리하고, 자동화 스크립트 내에 PDB 이름을 하드코딩하지 않는 것이 중요합니다. 스크립트 실행 전 반드시 V$PDBS 또는 CDB_PDBS를 조회하여 대상 PDB가 존재하는지 동적으로 검증하는 로직을 추가하세요.
“`sql
— 스크립트 내 PDB 존재 여부 사전 검증 예시
DECLARE
v_count NUMBER;
BEGIN
SELECT COUNT(*) INTO v_count
FROM V$PDBS
WHERE NAME = ‘MYPDB’;
IF v_count = 0 THEN
RAISE_APPLICATION_ERROR(-20001, ‘PDB MYPDB does not exist. Please verify.’);
END IF;
END;
/
“`
- PDB SAVE STATE로 재시작 후 상태 자동 복원 설정
CDB 재시작 이후 PDB가 자동으로 OPEN 상태를 유지하도록 SAVE STATE를 설정해 두면, 비정상 상태로 인한 혼란을 줄일 수 있습니다. 또한 PDB를 DROP 또는 UNPLUG하기 전에는 반드시 애플리케이션 팀 및 관련 팀에 사전 공지하고, 관련 스크립트 및 접속 설정을 업데이트하는 프로세스를 운영 절차에 포함시켜야 합니다.
“`sql
— 모든 PDB를 재시작 후 자동 OPEN 상태로 설정
ALTER PLUGGABLE DATABASE ALL SAVE STATE;
— 특정 PDB만 설정
ALTER PLUGGABLE DATABASE MYPDB SAVE STATE;
— SAVE STATE 확인
SELECT CON_NAME, STATE FROM DBA_PDB_SAVED_STATES;
“`
관련 에러
- ORA-65040:
operation not allowed from within a pluggable database— PDB 내부에서 CDB 레벨의 작업을 수행할 때 발생합니다. - ORA-65020:
pluggable database already open— 이미 OPEN 상태인 PDB를 다시 OPEN하려 할 때 발생합니다. - ORA-01033:
ORACLE initialization or shutdown in progress— CDB 또는 PDB 시작/종료 중 접속 시도 시 발생하며, PDB 상태 불일치와 함께 나타나기도 합니다. - ORA-65050:
Common users or roles or profiles can only be created in the root— CDB$ROOT가 아닌 PDB에서 공통 사용자 생성 시도 시 발생합니다.
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.