카테고리 없음

[oracle] 멀티테넌트, CDB, PDB, SEED 개념 및 PDB 생성방법 5가지

aonee 2024. 12. 18. 15:20
Multitenant 관리

 

Oracle Multitenant Architecture (멀티테넌트 아키텍처)

DB 안에 여러 DB들이 들어가 있는 구조

 

  • Oracle 12c에서 도입된 멀티테넌트 아키텍처(Multitenant Architecture)는 데이터베이스 관리의 효율성을 높이고, 여러 데이터베이스를 하나의 물리적 시스템에서 독립적으로 운영할 수 있는 방법을 제공합니다. 이 아키텍처의 핵심은 CDB (Container Database)와 PDB (Pluggable Database)의 개념
  • DB안의 DB
  • 컨테이너 역할을 수행하는 DB기능을 제공한다. 

[ 멀티테넌트 아키텍처의 주요 기능 ]

    1. PDB 생성 및 관리
      • PDB는 CDB 내에서 Create, Drop, Rename 등의 관리 작업을 통해 생성, 삭제, 이름 변경 등이 가능합니다.
      • CREATE PLUGGABLE DATABASE 명령어로 새로운 PDB를 생성할 수 있습니다.
    2. PDB 이동 및 복사
      • PDB Cloning: 기존 PDB를 복사하여 새로운 PDB를 만들 수 있습니다.
      • PDB Relocation: PDB를 다른 CDB로 이동할 수 있습니다.
    3. PDB의 연결 및 분리
      • Plug-in: 기존의 PDB를 CDB에 연결하는 작업.
      • Unplugging: CDB에서 PDB를 분리하여 다른 CDB로 옮길 수 있습니다.
    4. 공유 및 독립적인 데이터베이스 운영
      • 각 PDB는 독립적인 데이터베이스 환경을 제공하면서도 공유된 리소스를 사용합니다.
      • PDB $SEED를 기반으로 새로운 PDB를 빠르게 생성할 수 있습니다.
    5. 공통 리소스와 독립적 관리
      • 공통 리소스 (CDB$ROOT)는 여러 PDB 간에 공유되지만, 각 PDB는 독립적으로 데이터를 관리하고 보안을 유지합니다.주요 기능

[ 멀티테넌트 아키텍처의 예시 ]

 

1. 한 기업에서 여러 부서가 독립적인 데이터베이스를 운영할 때

  • 각 부서는 자신의 PDB를 통해 독립적인 애플리케이션과 데이터를 처리합니다.
  • 관리자는 CDB를 통해 여러 PDB를 관리하고, 공통 자원(예: 인프라, 라이선스 등)을 활용하여 비용을 절감할 수 있습니다.

2. 클라우드 서비스 제공 업체

  • 클라우드 환경에서 여러 고객이 하나의 CDB를 공유하면서도 각 고객은 자신의 독립적인 PDB에서 데이터를 처리합니다.
  • 이 방식은 멀티 테넌트 아키텍처의 장점을 살려 클라우드 리소스를 효율적으로 활용할 수 있습니다.

 

[정리]

멀티테넌트 아키텍처는 하나의 CDB에서 여러 개의 PDB를 실행하여 데이터베이스 관리의 효율성자원 관리 최적화를 가능하게 합니다

 
 

 

CDB

 

[CDB] Container DataBase

하나의 CDB는 여러개의 PDB라고 불리는 독립된 DB를 담을수 있는 기능 제공

CDB는 컨테이너 데이터베이스로, 멀티테넌트 아키텍처의 핵심입니다. 하나의 CDB는 여러 개의 PDB를 포함할 수 있으며, 모든 PDB는 이 CDB 내에서 운영됨

  • CDB$ROOT: CDB 내에서 루트 컨테이너라고도 불리며, 시스템 전반에 영향을 미치는 공통 데이터와 설정을 포함합니다. 예를 들어, 시스템 테이블사용자 계정 등이 이곳에 저장됨.
  • CDB 내의 파일들: CDB에는 기본적으로 컨테이너에 필요한 시스템 파일이 저장됩니다. 데이터베이스 구조의 일부로서 CDB는 모든 PDB를 관리하고 연결할 수 있는 기능을 제공

 

PDB

[PDB] Pluggable Database

독자적인 스키마, 스키마 오브젝트, 유저와 같은 집합을 가진다. (실제 물리적 정보 저장)

 

PDB는 플러그 가능한 데이터베이스로, 독립적인 데이터베이스 인스턴스를 의미

각 PDB는 독립적인 데이터베이스 환경을 제공하며, 개별적으로 사용자의 데이터와 애플리케이션을 저장함

  • PDB는 데이터베이스의 논리적 단위로, 물리적으로는 CDB 내에서 운영됨.
  • 각 PDB는 고유한 데이터설정을 가질 수 있으며, 독립적인 백업, 복구, 업그레이드가 가능함
  • PDB는 CDB 내에 포함된 여러 개의 PDB들 중 하나일 뿐이며, 동일한 CDB에 여러 개의 PDB를 포함할 수 있음

 

 

 

Seed PDB (PDB$SEED)

Seed PDB는 새로운 PDB를 생성할 때 기본 템플릿 역할을 하는 PDB이다

PDB$SEED는 읽기 전용(Read-only) PDB로, 새로운 PDB를 생성할 때 이를 복사하여 사용하는 방식임

이 템플릿을 사용하면 새로운 PDB를 빠르고 일관되게 생성할 수 있음

 

 

 

 

 

CDB와 PDB의 관계

 

 

  • CDB는 여러 PDB를 포함할 수 있으며, CDB$ROOT여러 PDB가 포함됨
  • PDB는 독립적인 데이터베이스로 동작하지만, CDB의 리소스를 공유함
  • 예를 들어, 각 PDB는 공통의 컨테이너 데이터를 사용할 수 있음
  • CDB$ROOT에는 시스템 레벨의 정보와 설정이 포함되고, PDB는 애플리케이션 및 데이터와 관련된 독립적인 정보를 가짐

 

 

그 외

 

 

 

[SYS] -> ROOT

- Oracle DB관리자로 Super user.

- Oracle 시스템의 기반이 되는 Data dictionary 소유자이며 DB생성과 삭제도 가능하다.

- Oracle 시스템의 총 관리자이며, SYSDBA 권한을 갖는다.

- Oracle 시스템을 유지, 관리, 생성하기 위한 모든 권한을 갖는 계정

 

[SYSTEM]

- SYS와 유사한 건한을 가지고 있지만 DB생성과 삭제는 불가능.

- 운영을 위한 권한을 갖는다. SYSOPER의 권한을 갖는다.

- 생성된 DB를 운영, 관리하기 위한 관리자 계정

 

[SYSDBA]

- SYSOPER의 권한 뿐 아니라 데이터베이스 생성과 삭제, Oracle 시스템에서 모든 권한을 갖는다.

- SYS계정이 갖는 권한.

 

[SYSOPER]

- 데이터베이스를 운영 관리하기 위한 권한으로 SYSTEM계정이 가짐.

- 아래 권한 외에 데이터베이스 자체를 생성 삭제하거나, 다른 유저 소유의 데이터에는 접근할 수 없다.

- 인스턴스와 데이터베이스에 대한 startup, mount, open, shutdown, dismount, close권한

데이터베이스 백업, 로그파일을 이용한 복구 등에 대한 database backup, archive log, recover 권한

 

 

 

 

 

 

Creating a New PDB from PDB$SEED

 

 

 

 

📌 Using the FILE_NAME_CONVERT

SQL>

CREATE PLUGGABLE DATABASE pdb1

ADMIN USER admin1 IDENTIFIED BY p1 ROLES=(CONNECT)

FILE_NAME_CONVERT = ('PDB$SEEDdir','PDB1dir');

 

* 반드시 local user 하나 만들어야 함

create pluggable

 

admin1은 local user이다. 기본적으로 pdb_dba+connect role 지정함

seed로 local관리자를 만들면 pdb_dba로 role인데 비어있는 role임.

원래 role에 권한 다 넣어두면 쓸 수 있는데

현재 쓸 수 있는 role은 없는 상태임

현재는 오직 connection role 뿐임

 

/u01/app/PDB$SEEDdir/system.dbf

/u01/app/PDB$1dir/system.dbf

 

 

 

📌 pdb 생성연습

Creating a New PDB from the PDB Seed

 

$ sqlplus / as sysdba

tnsnames.ora에  등록

 

 

 

Creating PDBs from Seed (5가지방법)

 

 

방법1. Create from Scratch

: pdb seed의 file을 copy

즉, Seed PDB에서 새로운 PDB를 복사하여 생성하는 방식

 

 

  • 구성: PDB$SEED는 기본 템플릿 역할을 하며, 이 파일을 바탕으로 새 PDB가 생성됩니다. Seed PDB를 기반으로 새로운 데이터베이스를 복제하는 것입니다.
  • 사용처: 기본적인 PDB가 필요하고, 기본 구조와 설정이 동일해야 할 때 사용됩니다.
  • 과정: 새로운 PDB를 만들기 위해 CREATE PLUGGABLE DATABASE 명령어를 사용합니다. PDB는 Seed PDB를 기반으로 복사되고, 사용자 데이터를 추가하거나 수정할 수 있습니다.
  • 예시 SQL:
    sql
    CREATE PLUGGABLE DATABASE new_pdb FROM PDB$SEED;
  • 장점: 빠르고 효율적인 PDB 생성 방법.
  • 단점: PDB 생성 후 초기 데이터베이스 구조가 기본값으로 설정되어 있어 추가 구성이 필요할 수 있음.

 

  • 실습

 

 

방법 2. Cloning

: source pdb 또는 non-cdb를 복사해서 생성

즉, Cloning은 기존의 PDB나 Non-CDB를 복제하여 새로운 PDB를 만드는 방식

 

  • 구성: 이미 존재하는 PDB 또는 Non-CDB 데이터베이스를 복사하여 새로운 PDB를 생성합니다. Non-CDB를 CDB로 변환할 수 있는 경우에도 사용됩니다.
  • 사용처: 기존 데이터베이스의 복제본이 필요한 경우.
  • 과정: CREATE PLUGGABLE DATABASE 명령을 사용하여 소스 PDB의 전체 데이터를 복사하여 새 PDB를 만듭니다. 소스 PDB의 메타데이터와 데이터가 그대로 복사되며, 클러스터 환경에서 유용하게 사용됩니다.
  • 예시 SQL:
    sql
    CREATE PLUGGABLE DATABASE new_pdb FROM source_pdb;
  • 장점: 기존 데이터베이스의 설정과 데이터를 그대로 복제하여 새로운 PDB를 빠르게 생성.
  • 단점: 복제하는 소스의 크기와 데이터 양에 따라 시간이 오래 걸릴 수 있음.
  • 실습

 

 

방법 3. Plugging In

: xml metadata file을 이용

 

 

 

방법 4. Relocation

: pdb를 다른 cdb로 이동 : 관련 file들을 move

 

 

 

 

방법 5. Referencing as a Proxy PDB

: db link를 이용하여 다른 pdb의 proxy pdb로 생성

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형