Il DBA (DataBase Administrator) utilizza statement SQL particolari per
estrarre le informazioni piu' interessanti sui DB che amministra.
Questa pagina raccoglie e descrive gli script SQL piu' utili ed interessanti per
l'opzione Multitenant introdotta nella versione Oracle 12c.
L'opzione Multitenant consente di montare piu' PDB (Plugable Database) sulla stessa istanza container. Si tratta di una variazione significativa dell'architettura che consente una gestione piu' flessibile delle istanze/database Oracle in ottica di servizio o, come e' certamente piu' di moda in questo periodo, per un'utilizzo in Cloud.
Gli esempi riportati riguardano: Creazione database, Elenco PDB, Riconoscere la connessione, Storico attivita', ...
Il documento e' volutamente breve e pratico con esempi funzionanti
di statement SQL.
Informazioni di dettaglio si possono trovare nella
relativa documentazione.
Nella versione 12c e' possibile ospitare piu' istanze di database (PDB: Pluggable Database) all'interno di un unico container chiamato CDB (Container Database). Si tratta di una variazione significativa dell'architettura che consente una gestione piu' flessibile delle istanze Oracle in ottica di servizio.
In tale architettura l'istanza CDB mantiene al suo interno
uno o piu' PDB utilizzando lo stesso set di processi,
la stessa SGA (System Global Area) e gli stessi Redo Log.
In pratica tutti le componenti di sistema sono condivise.
Dal punto di vista logico invece i PDB sono completamente separati
ed utilizzano data dictionary distinti, utenti diversi, ...
e naturalmente datafile separati.
In una configurazione di default oltre al Root database, che corrisponde
al database del container, e' sempre presente un Seed database montato in READ ONLY.
Dal Seed Database vengono tipicamente ricavati i PDB con un semplice comando di
duplicazione.
L'attivazione di un CDB avviene come quella di una normale instanza Oracle con il comando di startup da SQL*Plus. I PDB vanno invece aperti esplicitamente con un comando di OPEN. Ogni PDB si registra come servizio sul listener, rendendo cosi' completamente trasparente l'accesso alle applicazioni.
Le istanze container CDB (Container Database) vengono create normalmente
utilizzando l'utility dbca arricchita nella versione 12c di tutte le
opzioni necessarie.
I database PDB (Pluggable Database) possono essere creati con l'utility dbca
oppure con un semplice comando SQL partendo dal Seed Database:
La gestione dei PDB all'interno dei CDB e' molto dinamica.
Possono essere infatti essere aperti e chiusi (open, close, open read only, ...) in modo indipendente,
e migrati tra CDB (unplug e plug).
E' infine possibile convertire una normale istanza Oracle 12c in PDB con alcuni semplici passi:
E' stato utilizzato il parametro file_name_convert poiche' la creazione del PDB e' avvenuta
in modalita' COPY.
I parametri del PDB debbono essere compatibili con il CDB.
In caso di problemi risultano utili la procedura di verifica in PL/SQL e la relativa vista
con i risultati del controllo:
La vista principale, che contiene l'elenco dei PDB definiti e' la V$PDBS:
Ecco l'elenco dei PDB presenti, la loro dimensione e, importantissimo, il loro stato. Infatti un PDB, all'avvio dell'istanza CDB e' in stato MOUNTED, quindi utilizzabile solo per attivita' amministrative e di controllo. Per attivare un PDB va utilizzato il comando
Per ottenere il risultato voluto si definisce un trigger di Startup sul CDB che attiva tutti i PDB.
Il primo dubbio che si ha quando si lavora con l'opzione Multitenant e' riconoscere se si e' connessi con il root DB o con un PDB. Questo e' possibile da SQL*Plus con il comando SHOW CON_NAME ma e' anche possibile richiedere l'informazione con una query SQL:
La select e' molto semplice ed utilizza il context per riconoscere l'ambiente in cui opera. E' da notare la conversione effettuata con il DECODE(). I primi ID sono riservati all'intero CDB, al Root ed Seed database. Gli ID successivi sono quelli relativi ai PDB che possono essere fino a 250 gestiti da un unico CDB.
La vista di sistema V$DATABASE contiene la colonna CDB che indica se la base dati e' un CDB o meno. Questa colonna non e' utile per riconosce un PDB, infatti vale YES sia con un CDB che con un PDB poiche' entrambe contenuti in una base dati di tipo CDB.
Lavorando con un numero elevato di PDB e' sicuramente utile
disporre di un elenco delle principali attivita' svolte.
La vista CDB_PDB_HISTORY e' sicuramente di grande aiuto:
La query e' banale: si ottiene l'elenco delle attivita' svolte sui PDB in ordine temporale. La condizione CON_ID>2 restringe la storia ai soli PDB: root e seed non sono interessanti!
Un'introduzione ad Oracle si trova in Oracle RDBMS
mentre Novita' Architettura Oracle 12c riporta
gli ultimi aggiornamenti introdotti nella versione 12c.
L'evoluzione delle funzionalita' dell'RDBMS Oracle nel tempo e' stata notevole...
La storia delle versioni Oracle
negli ultimi 20 anni viene descritta in
C'era una volta...
Maggiori dettagli tecnici sulle diverse versioni di Oracle e le date
di rilascio di ogni versione sono riportate in
questo documento.
Il sito Oracle ufficiale
contiene tutta la documentazione ufficiale.
Volete leggere altre pagine come questa?
Provate qui!
Titolo: SQL4DBA - Oracle 12c Multitenant Option
Livello: Esperto
Data:
15 Agosto 2013
Versione: 1.0.0 - 15 Agosto 2013
Autore: mail [AT] meo.bogliolo.name