이 블로그 검색

[ORACLE] Multitenant 관리 2. (시작/종료) (SAVE/DISCARD STATE)

1. PDB 시작 종료

PDB에 직접 접속해 있는 경우, NON-CDB CDB  마찬가지로 SQL*Plus 명령어인 startup / shutdown 등의 명령어가 모두 동일하게 사용 가능하다.

 

아래 설명할 내용은 Multitenant 전용 명령어이면서 SQL*Plus외의 툴에서도 사용 가능한 "DDL 명령어"(alter pluggable database ...)에 대한 설명이다.

 

1.1. PDB OPEN (PDB 시작)

아래와 같은 OPEN Syntax를 지원한다.

 

ALTER PLUGGABLE DATABASE {PDB} OPEN READ WRITE [RESTRICTED] [FORCE];

ALTER PLUGGABLE DATABASE {PDB} OPEN READ ONLY [RESTRICTED] [FORCE];

ALTER PLUGGABLE DATABASE {PDB} OPEN UPGRADE [RESTRICTED];

 

PDB에 현재 접속하고 있는 경우, 현재 접속한 PDB {PDB} 부분은 생략이 가능하다.

 

다만, 사용자 실수로 인해 다른 Container를 종료하게 될 수 있으므로, CDB Level에서 PDB명을 모두 입력하여 작업하는 것이 나을 것으로 보인다. 

1.1.1. OPEN MODE

READ WRITE : OPEN_MODE 컬럼 확인 시, "READ WRITE"로 보이며, 읽기/쓰기가 모두 가능하다. OPEN MODE를 입력안하는 경우 default이다.

 

READ ONLY : OPEN_MODE 컬럼 확인 시, "READ ONLY"로 보이며, 읽기만 모두 가능하다. PDB$SEED의 경우 항상 READ ONLY OPEN 된다.

 

 

1.1.2. 그 외 옵션

RESTRICTED : SQL*Plus 명령어인 startup restrict와 동일하게, DBA 권한의 유저만 접속할 수 있도록한다.

 

FORCE : SQL*Plus 명령어인 startup force와 동일하게, 이미 DB OPEN 상태이더라도 강제로 수행한다. 또한 DB Patch 적용등의 작업 시, PDB$SEED READ WRITE OPEN 해야 하므로 FORCE 옵션이 쓰인다.

 

 

[수행 예시]

 

SQL> alter pluggable database pdb1 open ;

 

Pluggable database altered.

 

SQL> alter pluggable database pdb2 open read write restricted ;

 

Pluggable database altered.

 

SQL> show pdbs

 

CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

    2 PDB$SEED   READ ONLY  NO

    3 PDB1     READ WRITE NO

    4 PDB2     READ WRITE YES

alter pluggable database all open ; 으로 모든 PDB를 한번에 open 할 수 있다.

PDB$SEED 굳이 READ WRITE OPEN 하려면 FORCE 구문을 넣어서 별도 DDL 수행이 필요하다.

DDL문 끝에 RAC 환경을 위한 instances=all, instances={인스턴스명} 등과 같은 구문을 지원한다.

ex) alter pluggable database pdb1 open instances=all ;

 

1.2. PDB CLOSE (PDB 종료)

 

아래와 같은 Syntax를 지원한다.

 

ALTER PLUGGABLE DATABASE <pdb-name-clause> CLOSE [IMMEDIATE];

IMMEDIATE : SQL*Plus 명령어인 shutdown immediate와 동일하게, 세션을 기다리지 않고 종료한다.

 

ABORT ORA-16078: media recovery disabled 에러를 반환하면서 수행되지 않는다.​

 

 

 

[수행 예시]

 

SQL> alter pluggable database pdb1 close immediate ;

 

Pluggable database altered.

 

SQL> show pdbs ;

 

CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

    2 PDB$SEED   READ ONLY  NO

    3 PDB1     MOUNTED NO

    4 PDB2     READ WRITE NO

alter pluggable database all close [immediate] ; 으로 모든 PDB를 한번에 close 할 수 있다.

 

PDB$SEED FORCE 구문을 넣어야 해당 DDL문 수행이 가능하다.

해당 DDL 끝에 RAC 환경을 위한 instances=all, instances={인스턴스명} 등과 같은 구문을 지원한다.

ex) alter pluggable database pdb1 close instances=all ;

 

 

 

 

2. PDB SATE

2.1. DATABASE SAVE STATE

pdb의 현재 DB STATUS를 저장하여, 추후 CDB 재기동시에 PDB가 현재 STATUS로 올라오도록 설정 할 수 있다.

설정 결과는 CDB_PDB_SAVED_STATES 뷰에서 확인 가능하다.

save state가 설정되지 않은 경우에는 해당 뷰에 아무런 내역도 남아있지 않으며, default MOUNTED 이다.

SQL> show pdbs ;

 

CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

    2 PDB$SEED   READ ONLY  NO

    3 PDB1     READ WRITE NO

    4 PDB2     READ WRITE NO

 

 

SQL> alter pluggable database pdb2 save state ;

 

Pluggable database altered.

 

SQL> set lin 250

SQL> col con_name for a20

SQL> col state for a10

 

SQL> select * from CDB_PDB_SAVED_STATES ;

 

CON_ID CON_NAME   INSTANCE_NAME   CON_UID GUID     STATE  RESTRI

---------- -------------------- -------------------- ---------- -------------------------------- ---------- ------

    4 PDB2 orcl      248870251 C445052CFE95723BE055000000000001 OPEN NO

 

1 row selected.

 

SQL> shutdown immediate ;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

 

Total System Global Area 1191178288 bytes

Fixed Size    9134128 bytes

Variable Size 352321536 bytes

Database Buffers 822083584 bytes

Redo Buffers        7639040 bytes

Database mounted.

Database opened.

SQL> show pdbs ;

 

CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

    2 PDB$SEED   READ ONLY  NO

    3 PDB1     MOUNTED NO

    4 PDB2     READ WRITE NO

또한 alter pluggable database all save state ; 를 통해 모든 PDB SAVE STATE가 가능하다.

 

 

2.2. DISCARD STATE

save state를 삭제하고 싶은 경우 DISCARD STATE 구문을 써서 제거 할 수 있다.

default로 돌아가는 것이므로 CDB 기동시 해당 PDB MOUNTED 상태로 올라온다.

 

SQL> select con_name, state from CDB_PDB_SAVED_STATES ;

 

CON_NAME STATE

---------- ----------

PDB2       OPEN

 

1 row selected.

 

SQL> alter pluggable database pdb2 discard state ;

 

Pluggable database altered.

 

SQL> select * from CDB_PDB_SAVED_STATES ;

 

no rows selected

역시 alter pluggable database all discard state ; 를 통해 모든 PDB DISCARD STATE가 가능하다.


추천 게시글

[ORACLE] Data Pump가 느리거나 멈춘경우.

목록