데이터베이스 연구실.log

CDB와 PDB 구조

CDB 루트, 시드와 사용자 PDB의 역할, PDB별 데이터 파일과 CDB가 공유하는 리두 및 메모리

CDBPDBCDB$ROOTPDB$SEEDSHOW CON_NAMECDB_DATA_FILES멀티테넌트

#핵심 요약

CDB 안에는 CDB 루트(CDB$ROOT), 시드 PDB(PDB$SEED), 사용자가 만든 PDB가 있음

PDB는 데이터 파일을 각자 따로 가짐
리두 로그 파일, 컨트롤 파일, SGA, 백그라운드 프로세스는 CDB 전체가 하나로 공유함

있어야 할 테이블이 안 보이면 지금 세션이 루트에 붙어 있는지부터 확인함
SHOW CON_NAME이나 SYS_CONTEXT('USERENV', 'CON_NAME')로 봄

#개념과 동작 원리

#구성 요소

구성 요소 갖는 데이터 파일 역할 사용자 직접 접근
CDB 루트(CDB$ROOT) Oracle 제공 메타데이터와 공통 사용자 정보 모든 PDB가 함께 쓰는 정보의 기준점 보통 DBA만
시드 PDB(PDB$SEED) 템플릿용 데이터 파일 새 PDB를 만들 때 복사하는 실습 거의 없음
사용자 PDB 애플리케이션별 데이터 파일 실제 데이터와 코드를 담음 애플리케이션과 사용자
공유 기반(리두 로그, 컨트롤 파일, SGA, 백그라운드 프로세스) 해당 없음(CDB 단위) 모든 PDB가 공유 해당 없음

실습에서는 멀티테넌트의 목표 중 하나가 PDB 하나와 애플리케이션 하나를 1:1로 대응시키는 것이라고 적었음

실습에서는 UNDO 테이블스페이스도 공유 대상으로 적었음
이는 shared undo 모드일 때의 설명이고, local undo 모드에서는 PDB마다 UNDO 테이블스페이스를 가짐(로컬 UNDO와 임시 UNDO, 검토 기록)

공통 사용자는 모든 컨테이너에서 같은 계정으로 인식됨
이름 규칙과 생성은 공통 사용자와 로컬 사용자에 있음

#필수 명령어 또는 SQL

#지금 접속한 컨테이너 확인

SQL*Plus (SYSDBA)조회만 함
SHOW CON_NAME

SELECT SYS_CONTEXT('USERENV', 'CON_NAME') FROM dual;

SHOW PDBS

결과 해석:

실습 기록: 접속 직후는 CDB$ROOT였음
SHOW PDBS에서 PDB$SEED는 READ ONLY, 사용자 PDB는 READ WRITE로 나왔음

#PDB마다 데이터 파일이 따로 있는지 확인

SQL*Plus (SYSDBA, CDB$ROOT)조회만 함
SELECT file_name FROM dba_data_files;
SQL*Plus (SYSDBA)현재 세션 설정만 변경함
ALTER SESSION SET CONTAINER = <PDB_NAME>;

SELECT file_name FROM dba_data_files;

결과 해석:

설명: 루트에서는 루트 소유의 SYSTEM, SYSAUX, UNDO, USERS 데이터 파일만 보이고, PDB로 바꾸면 그 PDB의 하위 디렉터리 파일만 보임
DBA_ 뷰는 현재 컨테이너 기준으로 보여 줌

SQL*Plus (SYSDBA, CDB$ROOT)조회만 함
SELECT con_id, file_name FROM cdb_data_files ORDER BY con_id;

결과 해석:

실습 확인 문제: 루트에서 CDB_ 뷰를 쓰면 컨테이너를 바꾸지 않고 모든 컨테이너의 데이터 파일을 CON_ID와 함께 봄
실습 기록에는 CON_ID 1(루트)과 사용자 PDB들이 나왔고 2(시드)는 없었음
CDB_ 뷰가 시드를 기본으로 숨긴다는 설명은 TEMP 테이블스페이스에 있음

#운영체제에서 공유 파일 위치 확인

OS 셸 (oracle 사용자)조회만 함
ls <DATAFILE_DIR>

결과 해석:

설명: CDB 데이터 파일 디렉터리에는 컨트롤 파일과 리두 로그 파일, 루트 데이터 파일, PDB별 하위 디렉터리가 있음
컨트롤 파일과 리두 로그는 PDB 하위 디렉터리에는 없음
실습에서는 이것으로 "리두 로그와 컨트롤 파일은 CDB 전체가 공유한다"를 운영체제에서도 확인했음
디렉터리 배치는 설치 방식(OMF 여부)에 따라 다름

#사용 조건과 주의사항

Multitenant 구조의 공식 문서 대조 여부는 확인 불가

실습 확인 문제의 SQL*Plus 프롬프트 설정(glogin.sql)과 tnsnames.ora 별칭 추가는 접속과 도구 분야 범위라 여기서 다루지 않음

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기