Recovering from a PDB Snapshot / Restore a PDB Using a Snapshot
E' possibile creare un nuovo pdb da uno snapshot esistente, ad esempio da uno snapshot coursel.
Vedi post PDB snapshot Carousel
Mi collego al pdb PDL001 creato dagli snapshot e creo una tabella per fare un test successivamente.SQL> show con_name
CON_NAME
------------------------------
PDL001
SQL> create user pippo identified by pippo;
SQL> grant create table to pippo;
SQL> create table pippo.pluto (n number);
SET LINESIZE 150 TAB OFF
COLUMN con_name FORMAT A10
COLUMN snapshot_name FORMAT A30
COLUMN snapshot_scn FORMAT 9999999
COLUMN full_snapshot_path FORMAT A50
SELECT con_id,
con_name,
snapshot_name,
snapshot_scn,
full_snapshot_path
FROM cdb_pdb_snapshots
ORDER BY con_id, snapshot_scn;
Se volessimo creare un pdb per testing, oppure restorare un pdb in un certo momento usare la sintassi CREATE PLUGGABLE DATABASE … USING SNAPSHOT.
SQL> alter session set container=cdb$root;
SQL> CREATE PLUGGABLE DATABASE PDL001_TEST
Ho scelto uno snapshot precedente alla creazione della tabella "pluto" ed in effetti il nuovo pdb non la contiene:
SQL> alter session set container=PDL001_TEST;
Invece la tabella è presente nel pdb originario.
SQL> alter session set container=PDL001;
SQL> select * from pippo.pluto;
no rows selected
COLUMN con_name FORMAT A10
COLUMN snapshot_name FORMAT A30
COLUMN snapshot_scn FORMAT 9999999
COLUMN full_snapshot_path FORMAT A50
SELECT con_id,
con_name,
snapshot_name,
snapshot_scn,
full_snapshot_path
FROM cdb_pdb_snapshots
ORDER BY con_id, snapshot_scn;
SQL> alter session set container=cdb$root;
SQL> CREATE PLUGGABLE DATABASE PDL001_TEST
FROM PDL001
USING SNAPSHOT SNAP_2468369154_1072208281;
SQL> alter pluggable database PDL001_TEST open;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
4 PDL001 READ WRITE NO
5 PDL01 READ WRITE NO
6 PDL001_TEST READ WRITE NO
SQL> alter pluggable database PDL001_TEST open;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
4 PDL001 READ WRITE NO
5 PDL01 READ WRITE NO
6 PDL001_TEST READ WRITE NO
Ho scelto uno snapshot precedente alla creazione della tabella "pluto" ed in effetti il nuovo pdb non la contiene:
SQL> alter session set container=PDL001_TEST;
SQL> select * from pippo.pluto;
ERROR at line 1:
ORA-00942: table or view does not exist
ERROR at line 1:
ORA-00942: table or view does not exist
Invece la tabella è presente nel pdb originario.
SQL> alter session set container=PDL001;
SQL> select * from pippo.pluto;
no rows selected