PDB snapshot Carousel
Cosa sono glii snapshot PDB? sono point-in time copy di un PDB.
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 xml del PDB interessato.
Da Oracle 18c il PDB snapshot è a tutti gli effetti un PDB archive file ma creato con il PDB open (in stato read-write o read-only).
Un PDB snapshot è perciò una copia point-in-time del PDB, che può essere usato per scopi di recovery e per produrre nuovi PDB in un determinato istante.
Possono essere creati manualmente o automaticamente e gli archive file possono essere messi nella stessa directory che contiene i datafiles del PDB o, se usato Oracle Managed Files (OMF), sono posti nella directory indicata da parametro DB_CREATE_FILE_DEST.
SQL> alter session set container=PDL01;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
5 PDL01 READ WRITE NO
SQL> CREATE PLUGGABLE DATABASE PDL001
ADMIN USER pdb01 IDENTIFIED BY pdb01
SNAPSHOT MODE EVERY 5 MINUTES;
*
ERROR at line 1:
ORA-12754: Feature PDB SNAPSHOT CAROUSEL is disabled due to missing capability .
It means that this feature is limited to certain platforms – certain Exadata versions and OCI only and not available for On-Premise Database.
Per farlo funzionare su un installazione Enterprise Edition classica impostare il seguente parametro.
SQL> alter system set "_exadata_feature_on"=true scope=spfile;
SQL> shutdown immediate;
SQL> startup;
Siamo nel caso di utilizzo di OMF.
SQL> show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string /u01/app/oracle/oradata/CDB19L02/
SQL> CREATE PLUGGABLE DATABASE PDL001
ADMIN USER pdb01 IDENTIFIED BY pdb01
--- FILE_NAME_CONVERT=(PDL01 ,PDL001 )
SNAPSHOT MODE EVERY 5 MINUTES;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
4 PDL001 MOUNTED
5 PDL01 READ WRITE NO
SQL> ALTER PLUGGABLE DATABASE PDL001 OPEN;
SQL> ALTER PLUGGABLE DATABASE PDL001 SAVE STATE;
SELECT p.con_id,
p.pdb_name,
p.snapshot_mode,
p.snapshot_interval
FROM cdb_pdbs p
ORDER BY 1;
CON_ID PDB_NAME SNAPSH SNAPSHOT_INTERVAL
---------- ---------- ------ -----------------------------------------------------
6 PDL001 AUTO 5
Per modificarlo accedere a PDL001
SQL> ALTER SESSION SET CONTAINER = PDL001;
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 xml del PDB interessato.
Vedi post PDB Archive Files for Unplug and Plugin
Un PDB snapshot è perciò una copia point-in-time del PDB, che può essere usato per scopi di recovery e per produrre nuovi PDB in un determinato istante.
Possono essere creati manualmente o automaticamente e gli archive file possono essere messi nella stessa directory che contiene i datafiles del PDB o, se usato Oracle Managed Files (OMF), sono posti nella directory indicata da parametro DB_CREATE_FILE_DEST.
Dalla versione 18 è stato introdotto il concetto di snapshot Carousel che è una raccolta di snapshot, definiti da parametro MAX_PDB_SNAPSHOTS (di default è 8) che vengono sovrascritti in maniera circolare.
Prerequisiti:
Collegarsi al pluggable database in stato read write
Prerequisiti:
- Viene usato nei seguenti ambienti: Enterprise Edition on Engineered Systems, come Exadata, e Enterprise Edition su Oracle Database Cloud Services. Se non rientriamo in uno di questi ambienti impostare il parametro di inizializzazione SQL> alter system set "_exadata_feature_on"=true scope=spfile;
- Controllare lo spazio su disco perchè contiene molte copie del pdb
- Se si utilizza Oracle Managed Files (OMF) non è necessario usare name conversion, saranno messi nella directory specificata dal parametro DB_CREATE_FILE_DEST. Altrimenti saranno messi nella stessa directory dei PDB data files.
- Se non si utilizza OMF, usare nel comando di creazione del pdb (CREATE PLUGGABLE DATABASE ...) il file name conversion FILE_NAME_CONVERT o CREATE_FILE_DEST.
Collegarsi al pluggable database in stato read write
SQL> alter session set container=PDL01;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
5 PDL01 READ WRITE NO
SQL> CREATE PLUGGABLE DATABASE PDL001
ADMIN USER pdb01 IDENTIFIED BY pdb01
SNAPSHOT MODE EVERY 5 MINUTES;
*
ERROR at line 1:
ORA-12754: Feature PDB SNAPSHOT CAROUSEL is disabled due to missing capability .
It means that this feature is limited to certain platforms – certain Exadata versions and OCI only and not available for On-Premise Database.
Per farlo funzionare su un installazione Enterprise Edition classica impostare il seguente parametro.
SQL> alter system set "_exadata_feature_on"=true scope=spfile;
SQL> shutdown immediate;
SQL> startup;
SQL> show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string /u01/app/oracle/oradata/CDB19L02/
SQL> CREATE PLUGGABLE DATABASE PDL001
ADMIN USER pdb01 IDENTIFIED BY pdb01
--- FILE_NAME_CONVERT=(PDL01 ,PDL001 )
SNAPSHOT MODE EVERY 5 MINUTES;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
4 PDL001 MOUNTED
5 PDL01 READ WRITE NO
SQL> ALTER PLUGGABLE DATABASE PDL001 OPEN;
SQL> ALTER PLUGGABLE DATABASE PDL001 SAVE STATE;
Per vedere gli intervalli di tempo in minuti in cui sono effettuati gli snapshot eseguire la query seguente:
SELECT p.con_id,
p.pdb_name,
p.snapshot_mode,
p.snapshot_interval
FROM cdb_pdbs p
ORDER BY 1;
CON_ID PDB_NAME SNAPSH SNAPSHOT_INTERVAL
---------- ---------- ------ -----------------------------------------------------
6 PDL001 AUTO 5
Per individuare il numero massimo di snapshots che si possono avere nel Carousel:
SQL> SET LINESIZE 150 TAB OFF
SQL> COLUMN property_name FORMAT A20
SQL> COLUMN pdb_name FORMAT A10
SQL> COLUMN property_value FORMAT A15
SQL> COLUMN description FORMAT A50
SQL> SELECT pr.con_id,
p.pdb_name,
pr.property_name,
pr.property_value,
pr.description
FROM cdb_properties pr
JOIN cdb_pdbs p ON pr.con_id = p.con_id
WHERE pr.property_name = 'MAX_PDB_SNAPSHOTS'
ORDER BY pr.property_name;
---------- ---------- -------------------- --------------- --------------------------------------------------
5 PDL01 MAX_PDB_SNAPSHOTS 8 maximum number of snapshots for a given PDB
6 PDL001 MAX_PDB_SNAPSHOTS 8 maximum number of snapshots for a given PDB
SQL> SET LINESIZE 150 TAB OFF
SQL> COLUMN property_name FORMAT A20
SQL> COLUMN pdb_name FORMAT A10
SQL> COLUMN property_value FORMAT A15
SQL> COLUMN description FORMAT A50
SQL> SELECT pr.con_id,
p.pdb_name,
pr.property_name,
pr.property_value,
pr.description
FROM cdb_properties pr
JOIN cdb_pdbs p ON pr.con_id = p.con_id
WHERE pr.property_name = 'MAX_PDB_SNAPSHOTS'
ORDER BY pr.property_name;
---------- ---------- -------------------- --------------- --------------------------------------------------
5 PDL01 MAX_PDB_SNAPSHOTS 8 maximum number of snapshots for a given PDB
6 PDL001 MAX_PDB_SNAPSHOTS 8 maximum number of snapshots for a given PDB
Per modificarlo accedere a PDL001
SQL> ALTER SESSION SET CONTAINER = PDL001;
SQL> ALTER PLUGGABLE DATABASE SET MAX_PDB_SNAPSHOTS=3;