
Hot cloning di un pluggable database (PDB)
Continuiamo con la nostra serie di articoli che, attraverso esempi pratici e semplificati, dimostrano l’applicazione di strumenti fondamentali nei rispettivi ambiti. Introduciamo l’Hot cloning di un pluggable database (PDB) in ambito Oracle 12c R2 (12.2):
La necessità di clonare un database è evidente per chi gestisce qualsiasi database ma qui vediamo un paio di situazioni dove ci può essere utile.
Pensiamo a quando vogliamo testare una patch applicativa sul database di produzione; prima facciamo una clonazione del PDB, applichiamo la patch su PDB clonato e la testiamo.
Oppure quando vogliamo effettuare dei controlli sulle performance o test di regressione sull’applicazione; queste attività non possono essere eseguite in parallelo sugli ambienti di produzione e sugli stessi database, quindi ha senso clonare il PDB su un diverso CDB.

Per clonare un PDB con SQL*Plus si può utilizzare il comando CREATE PLUGGABLE DATABASE ma prima di usare questo comando vanno rispettati questi prerequisiti:
– bisogna essere connessi al CDB sul container root
– è necessario avere il system privilege di CREATE PLUGGABLE DATABASE
– il CDB in cui deve essere creato il PDB deve essere in modalità READ WRITE
– bisogna impostare il database da clonare in modalità READ ONLY prima della clonazione.
Vediamo i passaggi per clonare un PDB tramite SQL*Plus e quindi con il prompt di comandi:
Creiamo una directory di destinazione:
md c:\app\oracle\oradata\orcl\PDB3
Apri una connessione su CDB$ROOT come SYS – (connessione 1):
sqlplus / as sysdba
ALTER SESSION SET CONTAINER = PDB1;
ALTER USER hr ACCOUNT UNLOCK IDENTIFIED BY hr;
ALTER SESSION SET CONTAINER = CDB$ROOT;
Apri una connessione sul PDB1 come HR – (connessione 2):
sqlplus hr/[email protected]
SELECT salary FROM hr.employees WHERE employee_id = 100;
UPDATE employees SET salary=salary * 1.1;
SELECT salary FROM hr.employees WHERE employee_id = 100;
Notare come la transazione aperta nel PDB1 non è stata Committed. Torna alla connessione 1, creiamo il PDB3 a partire dal PDB1:
CREATE PLUGGABLE DATABASE PDB3 FROM PDB1 CREATE_FILE_DEST= 'c:\app\oracle\oradata\orcl/PDB3';
Verifichiamo che il PDB1 sia aperto in READ WRITE e il PDB3 sia MOUNTED:
COLUMN con_id FORMAT 999
COLUMN name FORMAT A10
SELECT con_id, name, open_mode FROM v$pdbs;
ALTER PLUGGABLE DATABASE PDB3 OPEN;
SHOW PDBS
Nella connessione 2, facciamo commit della transazione pendente:
COMMIT;
SELECT salary FROM hr.employees WHERE employee_id = 100
Torniamo alla connessione 1 e vediamo la situazione del PDB3:
ALTER SESSION SET container = PDB3;
SELECT salary FROM hr.employees WHERE employee_id = 100;
Vediamo elenco dei servizi legati al PDB3:
COLUMN name FORMAT A20
SELECT name FROM v$services;
I suoi datafiles:
COLUMN name FORMAT A70
SELECT file_name, tablespace_name FROM dba_data_files;
Ed i suoi tempfiles:
SELECT file_name, tablespace_name FROM dba_temp_files;
COLUMN username FORMAT A30
SELECT DISTINCT username FROM dba_users WHERE common='NO';
Torniamo alla connessione 2 dovremmo essere connessi al PDB1 come HR e riportiamo i valori della colonna SALARY al loro valore originale:
SHOW con_name
UPDATE employees SET salary=salary / 1.1;
COMMIT;
SELECT salary FROM hr.employees WHERE employee_id = 100;
Possiamo notare come i dati clonati non hanno subito alcuna modifica dopo la commit sul PDB1 quindi il nuovo PDB3 è completamente disaccoppiato e risponde alle nostre necessità espresse all’inizio dell’articolo.
Corsi Correlati
- Corso Amministratore Oracle Database;
- Certificazione Oracle Database;
- Corso Amministratore SQL Server;
- Corso Machine Learning;
- Corso Power BI;
Consulta il nostro Catalogo Corsi per Tecnologia oppure fai una Ricerca per Vendor o ancora trova uno specifico corso attraverso il motore di ricerca interno: Ricerca Corsi. Contattaci ora al Numero Verde 800-177596, il nostro team saprà supportarti nella scelta del percorso formativo più adatto alla tue esigenze.
VIDEO DI APPROFONDIMENTO
Laboratorio H24
Video Vega Training
La nostra Community