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.

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:
  • 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.
All'interno del container che si chiama CDB19L02 vogliamo creare un nuovo pdb PDL001 come  snapshot di PDL01 con frequenze di 5 minuti.
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;

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;

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;


CON_ID PDB_NAME PROPERTY_NAME PROPERTY_VALUE DESCRIPTION
---------- ---------- -------------------- --------------- --------------------------------------------------
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;

Post popolari in questo blog

Create e Drop Pluggable Database

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione