📌 PDB란?
PDB (Pluggable Database)는 Oracle의 멀티테넌트 아키텍처(Multitenant Architecture)에서
CDB(Container Database) 안에 플러그(Plug-in) 가능한 독립적인 데이터베이스입니다.
🔑 핵심 개념
- CDB: 물리적인 컨테이너. 메모리, 프로세스, 백업 등 공유 리소스를 포함
- PDB: 논리적이고 독립적인 사용자 데이터베이스. 필요한 경우 분리하거나 이식 가능
🎯 쉽게 말하면:
CDB는 아파트 건물, PDB는 개별 세대
→ 리소스는 공유하지만 데이터와 환경은 독립적
🧱 구성 요소 비교
| 구성 요소 | 설명 |
| CDB (Container Database) | 전체 DB 인프라. 여러 개의 PDB를 담는 ‘컨테이너’ 역할 |
| PDB (Pluggable Database) | 독립적인 사용자 데이터베이스. DDL, DML, 유저 관리 가능 |
| SEED PDB | 새로운 PDB를 만들기 위한 템플릿 역할의 초기 DB |
| ROOT Container (CDB$ROOT) | 공통 사용자 및 시스템 레벨 객체 관리 위치 |
⚙️ Oracle 19c에서의 특징
| 항목 | 설명 |
| 지원 버전 | Oracle 12c부터 도입, 19c는 성숙한 Multitenant 기능 제공 |
| 라이선스 | 19c부터는 1개 PDB는 무료로 사용 가능 (Non-CDB는 비권장) |
| 관리 도구 | SQL*Plus, DBCA, Enterprise Manager 등 모두 PDB 지원 |
| 성능 | 여러 PDB가 하나의 인스턴스(CDB)로 실행되므로 자원 효율↑ |
| 보안 격리 | 각 PDB는 사용자, 권한, 테이블 등을 완전 분리하여 관리 가능 |
🔧 주요 명령어 예시
✅ PDB 목록 확인
SHOW PDBS;✅ 특정 PDB로 전환
ALTER SESSION SET CONTAINER = pdb1;✅ 새로운 PDB 생성
CREATE PLUGGABLE DATABASE pdb2 ADMIN USER pdbadmin
IDENTIFIED BY mypass ROLES = (DBA)
FILE_NAME_CONVERT = ('/pdbseed/', '/pdb2/');✅ PDB 열기/닫기
ALTER PLUGGABLE DATABASE pdb2 OPEN;
ALTER PLUGGABLE DATABASE pdb2 CLOSE IMMEDIATE;✅ PDB 삭제
DROP PLUGGABLE DATABASE pdb2 INCLUDING DATAFILES;📦 장점 요약
| 장점 | 설명 |
| ✅ 관리 효율 | 여러 DB를 하나의 인스턴스로 통합 가능 |
| ✅ 빠른 배포 | 템플릿(PDB SEED)으로 신규 DB 생성이 빠름 |
| ✅ 개발환경 분리 | 개발/테스트/운영 환경을 같은 인스턴스 내에서 격리 가능 |
| ✅ 클라우드 친화 | Oracle Cloud Infrastructure와의 호환성 우수 |
❗ 주의할 점
- Oracle 21c부터는 Non-CDB 아키텍처는 더 이상 지원되지 않습니다
- 하나의 CDB 내에서 너무 많은 PDB를 운영하면 자원 경쟁 및 관리 복잡도 증가
- 백업 및 리커버리 정책은 CDB와 PDB 각각에 대해 고려 필요