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

選擇 Create a Pluggable database

選擇要建立 PDB 的 Container database

後續步驟依 DBCA 的指示依序執行即可。
除了使用 DBCA ,也可以直接透過 SQL*PLUS 以 Command Line 的方式來建立 PDB 。
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 錯誤 :

先設定參數 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; |
使用 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 即可 :

使用 SQL*PLUS 的話直接執行 drop pluggable database 即可 :
SQL> drop pluggable database pdb3 including datafiles; |