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/hr@PDB1
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.

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.

RICHIEDI ORA IL SUPPORTO DI UN NOSTRO SPECIALISTA

Il nostro team, da anni impegnato nella progettazione di piani formativi strutturati nell’ambito dell’ IT, ti supporterà ad orientarti verso la scelta di un percorso formativo certificato rispondente alle tue esigenze.