PDB Archive Files for Unplug and Plugin
Oracle 12.2 ha introdotto la funzione di unplug/plugin che permette la creazione di “PDB archive files” che sono una copia zippata dei datafiles e del file descrittore xml del PDB interessato.
3) Spostare manualmente il file ".pdb" nel server contenente il secondo container e verificare la compatibilità del PDB con il nuovo container.
SQL> CREATE PLUGGABLE DATABASE pdl01
Supponiamo di dover spostare il pluggable PDL01 dal container CDB19L01 al container CDB19L02.
Questa è la situazione attuale:
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDL01 READ WRITE NO
SQL> alter session set container=PDL01;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 PDL01 READ WRITE NO
SQL> select * from user1.emp;
X
----------
1
2
2
3
4
1) Chiuedere il pdb
SQL> ALTER PLUGGABLE DATABASE PDL01 CLOSE;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 PDL01 MOUNTED
2) Creare il file zip copia dei datafile e del file descrittore xml.
Collegarsi al root container
SQL> ALTER SESSION SET CONTAINER=CDB$ROOT;
Session altered.
SQL> SHOW CON_NAME
CON_NAME
------------------------------
CDB$ROOT
SQL> ALTER PLUGGABLE DATABASE PDL01 UNPLUG INTO '/u01/pdl01.pdb';
Pluggable database altered.
SQL> select pdb_name, status from CDB_PDBS;
PDB_NAME STATUS
---------- ------------------------
PDL01 UNPLUGGED
PDB$SEED NORMAL
E' possibile cancellare il pdb inclusi i datafiles perchè è stato creato il file archiviato.
SQL> DROP PLUGGABLE DATABASE pdl01 INCLUDING DATAFILES
3) Spostare manualmente il file ".pdb" nel server contenente il secondo container e verificare la compatibilità del PDB con il nuovo container.
$ export ORACLE_SID=CDB19L02
$ sqlplus
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL>
SET SERVEROUTPUT ON
DECLARE
l_result BOOLEAN;
BEGIN
l_result := DBMS_PDB.check_plug_compatibility(
pdb_descr_file => '/u01/pdl01.pdb',
pdb_name => 'pdl01');
IF l_result THEN
DBMS_OUTPUT.PUT_LINE('compatible');
ELSE
DBMS_OUTPUT.PUT_LINE('incompatible');
END IF;
END;
/
compatible
PL/SQL procedure successfully completed.
Per visualizzare il motivo della incompatibilità interrogare la tabella PDB_PLUG_IN_VIOLATIONS.
4) Effettuare il plug del pdb
USING '/u01/pdl01.pdb' CREATE_FILE_DEST='/u01/app/oracle/oradata/CDB19L02/' ;
Pluggable database created.
Pluggable database created.
5) Verifica
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
5 PDL01 MOUNTED
SQL> ALTER PLUGGABLE DATABASE PDL01 OPEN READ WRITE;
Pluggable database altered.
SQL> alter session set container=PDL01 ;
Session altered.
SQL> select * from user1.emp;
X
----------
1
2
2
3
4
Verificare che sotto /u01/app/oracle/oradata/CDB19L02 sia stata creata la directory PDL01.