인성장

[Oracle] 멀티테넌트(Multitenant) 관리 및 사용법 본문

Oracle/Admin

[Oracle] 멀티테넌트(Multitenant) 관리 및 사용법

인성장 2024. 9. 13. 11:27
Multitenant 관리

 

오라클 멀티테넌트란?

하나의 Container DataBase 에 여러 개의 Pluggable DataBase의 독립된 데이터베이스를 담은 구조를 말합니다.

데이터베이스 안에 여러개의 데이터베이스가 있는 구조라는 것이지요. 이렇게되면 여러개의 데이터베이스를 하나로 관리할 수 있고, 서버 자원사용량에 있어 큰 이점을 가지고 있습니다. 21c부터는 이 기능이 필수로 사용됩니다.

 

Oracle Multitetant Architecture

 

* Oracle Multitenant를 사용하면 왜 서버 자원사용량에 있어 일반 Non-CDB보다 큰 이점이 있나요?

서버 내 DB 인스턴스가 한개로 사용한다고 하면 크게 다르지 않겠지만, 예를 들어 서버에서 여러 개의 DB 인스턴스를 사용해야 한다 하면, Non-CDB 방식은 각각 DB 인스턴스에 대한 자원을 할당하여 관리해주어야 합니다. 그러나 CDB 방식은 하나의 CDB에 할당받은 자원을 PDB가 공유하여 사용하기 때문에 서버 자원 측면에서 매우 효율적이라 할 수 있습니다.

PDB는 CDB와 Datafile 저장영역만 분리되어 있고 나머지 자원(Control file, Redo log file, Parameter file 등)들은 공유해서 사용합니다.

 

PDB 관리 명령어

 

 

1. PDB 조회

SQL> SELECT NAME, OPEN_MODE, RESTRICTED, OPEN_TIME FROM V$PDBS ;

 

2. PDB READ WRITE Mode로 OPEN

SQL> alter pluggable database TESTPDB open READ WRITE ;

 

3. Container 변경 (PDB 접속)

SQL> alter session set container=TESTPDB ;

 

4. 현재 접속한 Container DB 확인

SQL> show con_name

 

5. PDB 종료

SQL> alter pluggable database TESTPDB close;

 

6. PDB 생성

- PDB$SEED는 PDB를 만들기 위한 템플릿입니다. PDB$SEED 경로를 복제하여 신규 PDB를 생성합니다.

- PDBUSER는 해당 PDB를 관리할 목적의 계정으로 DBA 권한이 있는 계정이면 가능.

SQL> create pluggable database "TESTPDB" admin user "PDBADMIN" identified by "password" roles=(dba) file_name_convert = ('/data/MULDB/pdbseed','/data/MULDB/TESTPDB') ;

 

7. PDB 삭제

SQL> drop pluggable database TESTPDB including datafiles;

 

 

참고

PDB에선 상관없으나, CDB에서 유저 생성 시 유저명앞에 C##을 붙여야 합니다. (컨테이너DB 소유 계정임을 표시하기 위한 목적?) CDB에서도 C##을 붙이지 않고 일반적으로 생성하는 방식으로 하려면 특정 히든 파라미터값을 TRUE로 변경해주면 됩니다.

-- c## 관련 히든파라미터 값 조회
SQL> col name for a40
col current_value for a15
col default_value for a15
col default_t_f for a15
select
ksppinm "name",
ksppstvl "current_value",
b.ksppstdfl "default_value",
b.ksppstdf "default_t_f"
from x$ksppi a, x$ksppsv b
where 1=1
and a.indx=b.indx
and a.ksppinm like '_oracle_script';

-- 히든파라미터 값 변경
SQL> alter session set "_oracle_script" =true;

-- 영구 적용 원할 시 (명령어 수행 후 재기동 필요)
SQL> alter system set "_oracle_script" =true scope=spfile;

 

반응형