Oracle ORA-65011 오류 원인과 해결 방법 완벽 가이드

ORA-65011
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 에러 코드 시리즈

주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.

본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.

댓글 남기기