2025年5月30日 星期五

2. 建立與刪除 PDB

建立 PDB 可以使用 DBCA ,執行後選擇 Manage Pluggable database

A screenshot of a computer

Description automatically generated


選擇 Create a Pluggable database

A white background with black text

Description automatically generated


選擇要建立 PDB 的 Container database 

A screenshot of a computer

Description automatically generated


後續步驟依 DBCA 的指示依序執行即可。


除了使用 DBCA ,也可以直接透過 SQL*PLUS 以 Command Line 的方式來建立 PDB 。


  • Create PDB from PDB$SEED :

SQL> create pluggable database pdb2 admin user pdbadmin identified by welcome1 default tablespace users datafile '/u01/oradata/ORAPDB/pdb2/users01.dbf' size 5M file_name_convert=('pdbseed','pdb2');

SQL> alter pluggable database pdb2 open;


如果不指定 file_name_convert 則會依照參數 db_create_file_dest 所設定的位置以 OMF 的格式建立 datafile ,如果沒有設定 db_create_file_dest 則必須指定 file_name_convert ,否則會出現 ORA-65016 錯誤 :

A black screen with white text

Description automatically generated

先設定參數 db_create_file_dest 就無需使用 file_name_convert

SQL> alter session set db_create_file_dest='/u01/oradata';

SQL> create pluggable database pdb3 admin user pdbadmin identified by welcome1 default tablespace users datafile;

SQL> alter pluggable database pdb3 open;


另外也可以使用參數 pdb_file_name_convert ,這樣子在建立過程中也無須使用 file_name_convert ,與 db_create_file_dest 的差別在於 db_create_file_dest 是使用 OMF 格式進行建立,而 pdb_file_name_convert 只是更改 datafile 的路徑位置,檔案名稱還是會依照 PDB$SEED 的格式 :

SQL> alter session set pdb_file_name_convert='pdbseed','pdb4';

SQL> create pluggable database pdb4 admin user pdbadmin identified by welcome1 default tablespace users datafile '/u01/oradata/ORAPDB/pdb4/user01.dbf' size 5M;

SQL> alter pluggable database pdb4 open;


  • Create PDB from PDB Clone :

使用 PDB Clone 的方式建立 PDB 可以從 Local PDB 或者是透過 DB Link 從 Remote PDB 進行 Clone :

From Local :

SQL> create pluggable database pdb5 from pdb4 file_name_convert=('pdb4','pdb5');


From Remote :

SQL> create public database link rcdb connect to c##admin identified by welcome1 using 'rcdb';

SQL> create pluggable database pdb6 from rpdb@rcdb file_name_convert=('rpdb','pdb6');

SQL> alter pluggable database pdb6 open;


這邊要注意的是,建立 db link 是在 CDB 層級並且所使用的 user 必須要有 create pluggable database 的權限,否則會出現錯誤 ORA-17628: Oracle error 1031 returned by remote Oracle server ;另外 Remote PDB 必須 Enable Local Undo 才能進行 Remote Clone ,不過以現在 19c 的版本來說,預設就已經是 Enable Local Undo 了 。

SQL> select property_name, property_value

From database_properties

where  property_name = 'LOCAL_UNDO_ENABLED'


PROPERTY_NAME                      PROPERTY_VALUE

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

LOCAL_UNDO_ENABLED           TRUE


如果 PDB 要設定 TDE 則須先建立 encryption key 再進行 activate :

SQL> alter session set container=pdb6;

SQL> administer key management create encryption key using tag 'pdb6' force keystore identified by welcome1 with backup using 'pdb6';


keystore altered.


SQL> select key_id from v$encryption_keys where tag='pdb6';


KEY_ID

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

ATIrNovtp0/xv0kCwplOgFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA


SQL> administer key management use encryption key 'ATIrNovtp0/xv0kCwplOgFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' force keystore identified by welcome1 with backup;


keystore altered.


SQL> select key_id,activation_time,tag from v$encryption_keys;


KEY_ID

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

ACTIVATION_TIME

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

TAG

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

ATIrNovtp0/xv0kCwplOgFoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

30-MAY-25 06.05.52.594777 PM +08:00

pdb6


刪除 PDB 同樣的也可以使用 DBCA 來進行刪除 ,在 Manage Pluggable database 的選項底下選擇 Delete a Pluggable database 即可 :

A screenshot of a computer

Description automatically generated


使用 SQL*PLUS 的話直接執行 drop pluggable database 即可 :

SQL> drop pluggable database pdb3 including datafiles;