-
[oracle] 멀티테넌트, CDB, PDB, SEED 개념 및 PDB 생성방법 5가지카테고리 없음 2024. 12. 18. 15:20
Multitenant 관리
Oracle Multitenant Architecture (멀티테넌트 아키텍처)
DB 안에 여러 DB들이 들어가 있는 구조
- Oracle 12c에서 도입된 멀티테넌트 아키텍처(Multitenant Architecture)는 데이터베이스 관리의 효율성을 높이고, 여러 데이터베이스를 하나의 물리적 시스템에서 독립적으로 운영할 수 있는 방법을 제공합니다. 이 아키텍처의 핵심은 CDB (Container Database)와 PDB (Pluggable Database)의 개념
- DB안의 DB
- 컨테이너 역할을 수행하는 DB기능을 제공한다.
[ 멀티테넌트 아키텍처의 주요 기능 ]
-
- PDB 생성 및 관리
- PDB는 CDB 내에서 Create, Drop, Rename 등의 관리 작업을 통해 생성, 삭제, 이름 변경 등이 가능합니다.
- CREATE PLUGGABLE DATABASE 명령어로 새로운 PDB를 생성할 수 있습니다.
- PDB 이동 및 복사
- PDB Cloning: 기존 PDB를 복사하여 새로운 PDB를 만들 수 있습니다.
- PDB Relocation: PDB를 다른 CDB로 이동할 수 있습니다.
- PDB의 연결 및 분리
- Plug-in: 기존의 PDB를 CDB에 연결하는 작업.
- Unplugging: CDB에서 PDB를 분리하여 다른 CDB로 옮길 수 있습니다.
- 공유 및 독립적인 데이터베이스 운영
- 각 PDB는 독립적인 데이터베이스 환경을 제공하면서도 공유된 리소스를 사용합니다.
- PDB $SEED를 기반으로 새로운 PDB를 빠르게 생성할 수 있습니다.
- 공통 리소스와 독립적 관리
- 공통 리소스 (CDB$ROOT)는 여러 PDB 간에 공유되지만, 각 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:
sqlCREATE 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:
sqlCREATE 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로 생성
반응형