// Oracle 12c부터 메인테넌트 기능을 제공함.
// 해당 기능을 간략히 설명하자면, CDB (Container Database) 안에 여러 PDB (Pluggable Database)를 사용할 수 있는데
컨테이너 안에 여러 개의 PDB를 생성하여 Unplug 또는 Plug 하며 효과적으로 DB를 운영할 수 있음.
// 여러 개의 데이터베이스를 생성하여 운영하는 것보다 메인테넌트 기능을 사용하면 리소스를 효율적으로 사용할 수 있을 것 같음.
(보통 1개의 데이터 베이스 당 프로세스 할당 갯수가 53 ~54 정도 되는데 메인테넌트 기능을 이용하면 PDB 추가 할 때마다 프로세스가 1~2개 정도만 증가함.)
SQL > show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
------------------ ---------------------------------------- ------ ------- --------------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
4 PDB1_2 READ ONLY NO
SQL > show con_name
CON_NAME
--------------------------------------------------
CDB$ROOT
// 사용하고자 하는 container로 변경
SQL > alter session set container=PDB1;
SQL > show con_name
CON_NAME
--------------------------------------------------
PDB1
// Restricted는 Database 외부에서 접근할 때 sysdba 계정을 제외한 나머지 계정들에게 제한을 하는 모드임.
// sysdba가 부여한 권한을 가진 계정만 접근 가능.
SQL > alter pluggable database open restricted;
// read only는 데이터를 수정하는 일 없이 select 요청만 이용하고자 할 때 사용하는 모드임.
SQL > alter pluggable database open read only;
// CDB 아키텍처
// 로그를 쓸 때 존재하는 모든 PDB들의 Container가 단일로 로그를 쓰기 때문에 archivelog 모드 사용 시 CDB에서 alter 구문을 날려야 한다.
// sga_target을 각 PDB별로 다르게 적용할 수 있는 것으로 보아, SGA로 부터 공간을 나눠서 쓰는 듯함.
// 시스템에 큰 영향을 끼치지 않는 parameter들은 각 PDB에서 별도로 적용 및 사용가능(?) CDB에서 설정해야하는 parameter도 존재
> PDB를 언플러그해서 CDB로 플러그
SQL > alter pluggable database pdb1 close;
SQL > alter pluggable database pdb1 unplug into '/tmp/pdb1.xml';
SQL > drop pluggable database pdb1 keep datafiles;
// plug하고 싶은 CDB에서 plug 가능 여부를 체크 (DBMS_PDB.CHECK_PLUG_COMPATIBILITY) 후
// ASM인 경우
SQL > create pluggable database pdb1 using '/tmp/pdb1.xml'; // 이전 위치의 파일 지울 것!
// ASM이 아닌 경우
SQL > create pluggable database pdb1 using '/tmp/pdb1.xml' file_name_convert=('/oradata/CDB1/pdb3', '/oradata/CDB2/pdb3');
> non-CDB를 PDB로 플러그
// non-cdb를 startup open read only
SQL > exec DBMS_PDB.DESCRIBE('/tmp/pbd1.xml');
// plug하고 싶은 CDB에서 plug 가능 여부를 체크 (DBMS_PDB.CHECK_PLUG_COMPATIBILITY) 후
// ASM인 경우
SQL > create pluggable database pdb1 using '/tmp/pdb1.xml'; // 이전 위치의 파일 지울 것!
// ASM이 아닌 경우
SQL > create pluggable database pdb1 using '/tmp/pdb1.xml' file_name_convert=('/oradata/CDB1/pdb3', '/oradata/CDB2/pdb3');
> CDB와 PDB의 백업과 복구
> MORE => http://www.gurubee.net/lecture/3316
'Oracle' 카테고리의 다른 글
[Oracle] Migrating NON-ASM to ASM (0) | 2020.07.28 |
---|---|
[Oracle] INS-45511: Installer has detected that an Oracle Grid Infrastructure home is marked incorrectly as configured (0) | 2020.07.28 |
[Oracle] Oracle 12cR2 New Feature (0) | 2020.03.02 |
[Oracle] 모니터링 쿼리 (0) | 2019.11.22 |
[Oracle] RMAN (0) | 2019.11.20 |