PDB 可以使用 unplug 與 plug 的方式將其移轉至另一個 CDB當中。

PDB 可以 unplug 至 xml file 或者是 archive file ,差別在於 xml file 只有紀錄此 PDB的 metadata ,而 archive file 則包含 datafile , 類似 dbca 的 template 那樣。
使用 unplug into 的命令將 PDB unplug , unplug 為 xml file 使用副檔名 .xml ; unplug 為 archive file 使用副檔名為 .pdb :
Unplug PDB into xml file : SQL> alter pluggable database rpdb close immediate; SQL> alter pluggable database rpdb unplug into '/tmp/rpdb.xml';
Unplug PDB into archive file : SQL> alter pluggable database rpdb2 close immediate; SQL> alter pluggable database rpdb2 unplug into '/tmp/rpdb2.pdb'; |
unplug 出來的 xml file 是一個文字檔,裡面紀錄的此 PDB 的 tablespace 資訊與 datafile 位置 ,而 archive file 為 image 檔,不能使用文字模式編輯:

PDB unplug 之後,其資訊仍然會存在原 CDB 上,必須使用 drop pluggable database 的指令進行刪除:

刪除已 unplug 的 PDB :
SQL> drop pluggable database rpdb keep datafiles; 🡨 unplug 為 xml file 時 datafile 必須保留 SQL> drop pluggable database rpdb2 including datafiles; |
這邊要注意的是, xml file 只是一個路徑的參照,原本的 datafile 必須保留直到 plug 到 CDB 之後才可以刪除,而 archive file 則已包含 datafile ,此時原本的 datafile 就可以刪除 。
Plug PDB 至另一個 CDB 前必須先進行相容性檢查,於新的 CDB 使用 DBMS_PDB.CHECK_PLUG_COMPATIBILITY 進行檢查:
SQL> SET SERVEROUTPUT ON DECLARE compatible BOOLEAN := FALSE; BEGIN compatible := DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file => '/tmp/rpdb.xml', 🡨 檢查 .xml 或 .pdb pdb_name => 'rpdb'); if compatible then DBMS_OUTPUT.PUT_LINE('Is pluggable compatible? YES'); else DBMS_OUTPUT.PUT_LINE('Is pluggable compatible? NO'); end if; END; / |
如果檢查沒有通過,則需修正 pdb_plug_in_violations 中的錯誤才能進行 plug :
SQL> select time,name,cause,type,status,message,action from pdb_plug_in_violations; |
使用 xml file 進行 plug :
使用原本 PDB的 datafile SQL> create pluggable database rpdb using '/tmp/rpdb.xml' nocopy;
複製原本 PDB 的 datafile 至新的位置 SQL> create pluggable database rpdb using '/tmp/rpdb.xml' file_name_convert=('/u01/oradata/SQLMGMT/rpdb','/u01/oradata/ORAPDB/rpdb');
SQL> alter pluggable database rpdb open; |
使用 archive file 進行 plug :
SQL> create pluggable database rpdb2 using '/tmp/rpdb2.pdb' file_name_convert=('/tmp','/u01/oradata/ORAPDB/rpdb2'); SQL> alter pluggable database rpdb2 open; |
file_name_convert 的設定為 archive file 所在的目錄位置轉換至實際要建立 datafile 的位置。
沒有留言:
張貼留言