Architettura Multitenant Database Oracle

Pubblicato da Patrizia Gardis il

L’Architettura Multitenant Database Oracle è progettata per ospitare più database PDB “PLUGGABLE DATABASE” all’interno di un’unica istanza contenitore CDB “CONTAINER DATABASE”.
L’archittttura dell’istanza CDB al suo interno mantiene piu’ PDB usufruendo del medesimo set di processi e della stessa SGA (System Global Area).
Invece per i componenti di sistema (control file, redo log, spfile, …) sono pertinenti al solo CDB.

La creazione di un’utenza e’ locale al DB a cui si e’ connessi, ma e’ ammissibile realizzare nel CDB utenze generali per tutti i PDB.

In un PDB è consentita la creazione di tablespace temporanei, ma se non viene fatto viene utilizzato il tablespace temporaneo del CDB.

Infine i datafile sono raccolti in una directory con nome uguale al nome del PDB e possono utilizzare la modalita’ OMF (Oracle Managed Files).
La creazione di database collegabili, lo spostamento di database collegabili fra contenitori e la clonazione di database collegabili vengono eseguiti con comandi SQL e queste operazioni vengono eseguite solo in pochi secondi.
L’avvio di un CDB avviene come quello di una normale istanza con il comando di startup da SQL*Plus.
I PDB vanno invece aperti con un comando di OPEN, differentemente al CDB, di default sono in stato MOUNTED e dunque non accessibili.
Possiamo anche creare anche il nostro PLUGGABLE database in fase di installazione del database. Di seguito creeremo un PDB con un db già installato.

Creare ed aprire un PDB Database:

Come prima cosa creeremo il nostro PLUGGABLE DATABASE di nome PDB1 con il seguente comando:

CREATE PLUGGABLE DATABASE pdb1;

Ora possiamo accedere al nostro PDB con il seguente comando:

ALTER SESSION SET CONTAINER=pdb1;

I PDB appena creati sono in stato MOUNT e vengono aperti come tutte le normali istanze Oracle con il seguente comando:

ALTER PLUGGABLE DATABASE PDB1 OPEN;

Architettura Multitenant Database Oracle

Creare utenze locali e comuni

Gli utenti creati su un PDB sono e restano locali al PDB:

CREATE USER PIPPO IDENTIFIED BY xxx;

Invece gli utenti creati con il prefisso c## sono comuni a tutti i PDB e CDB:

CREATE USER C##PIPPO IDENTIFIED BY xxx all;

Collegarsi al CDB ed i PDB

Per connettersi ad un PDB o al CDB sono disponibili tre alternative:

1.Con la variabile di sessione container:

AlTER SESSION SET CONTAINER=pdb1;
ATER SESSION SET CONTAINER=cdb$root;

2.Utilizzare un servizio sul listener:

conn sys/xxx@pdb1 as sysdba;

3.Utilizzare la variabile d’ambiente ORACLE_PDB_SID per accedere direttamente al PDB senza connect string da locale:

export ORACLE_PDB_SID=PDB1;
sqlplus / as sysdba;

Come capire dove si è connessi:

Sembra banale ma le prime volte non è facile capire dove si è connessi, il seguente comando mostrerà il database in cui ci siamo:

show con_name;

Come controllare il nome del CONTAINER e PLUGGABLE database:

select name from V$CONTAINERS;

Controllare i nomi dei PLUGGABLE database:

select pdb_name, status from DBA_PDBS order by 1;

Attivare un modo automatico i PDB:

Nota bene lanciare i seguenti comandi da fuori il PDB quindi dentro il nostro CONTAINER:

ALTER PLUGGABLE DATABASE pdb1 OPEN;
ALTER PLUGGABLE DATABASE pdb1 SAVE STATE;

Cancellare un PDB

La cancellazione dell’esempio rimuove definitivamente e completamente il PDB ed i suoi datafile.

DROP PLUGGABLE DATABASE pdb1 INCLUDING DATAFILES;

Assegniamo i ruoli e privilegi

GRANT CREATE TABLESPACE TO PIPPO;
GRANT CONNECT TO PIPPO;
GRANT CREATE TABLE TO PIPPO;
GRANT CREATE ANY DIRECTORY TO PIPPO;

Per visionare i miei tutorial Oracle clicca qui!
A questo LINK, invece, troverai le query SQL.

Resta aggiornato sulle nostre attività entrando a far parte della nostra community:
Facebook
Youtube
Linkedin


0 commenti

Lascia un commento

Segnaposto per l'avatar