Oracle 12c: Multitenant architecture e pluggable database

venerdì 23 agosto 2013 alle 23:40 | Pubblicato su 12c | 5 commenti
Tag: ,

Come probabilmente i più attenti e interessati sanno bene dal primo luglio 2013 è ufficialmente stata rilasciata la versione 12c (release 1) del database Oracle. In realtà, per la precisione, il pacchetto software per Linux è diventato disponibile gia qualche giorno prima, uno dei primi ad annunciarlo è stato Tanel Poder. In quei giorni molti dei blog specialistici che più o meno cerco di seguire hanno ripreso vita e pubblicato post sulle nuove caratteristiche della nuova versione, che è stata sottoposta a un programma di beta testing da parte di molti di questi blogger che sono specialisti ed esperti di database Oracle. Io non ho seguito inizialmente con molto entusiasmo questo nuovo rilascio, anche perché sono ancora alle prese con installazioni Oracle 10gR1 e solo da poco abbiamo escluso finalmente la possibilità di fare nuove installazioni 10gR2 prendendo finalmente come versione di riferimento la 11gR2. Avendo però avuto un po’ di tempo libero a disposizione ho deciso di investirlo per indagare sulle nuove caratteristiche e funzionalità introdotte da Oracle nella nuova versione del database, in modo da non trovarmi più avanti spiazzato.

La caratteristica più enfatizzata e dai più ritenuta interressante è la cosiddetta architettura “multitenant” e i “pluggable database”. Ho dato una letta al capitolo 17 del manuale Concepts dove viene fatta una introduzione quasi commerciale ai vantaggi di questa nuova architettura che permette di facilitare in sostanza il cosiddetto consolidamento rendendo più facile portare su un’unico database server più database, ottimizzando quindi l’utilizzo delle risorse harware e riducendo l’attività di manutenzione. Come è fatta questa architettura? Il concetto, a grandi linee è che c’è un database server, del tutto analogo a un database server pre-12c, con datafile, control file, online redo log, undo, sga ecc che però alla creazione viene definito come “container”, questo viene definito CDB. Piccola nota: sulla documentazione Oracle la terminologia viene usata in modo leggermente diverso, in particolar modo nella definizione di container, questo però mi confonde ancora un pochino, quindi mi prendo la libertà di reinterpretare tale nomenclatura in modo leggermente diverso. Probabilmente Oracle con il termine “container” designa” un contenitore di dati, mentre io avrei pensato a un contenitore di altri database, cosa che oracle chiama “multitenant container database (CDB)”.

Un CDB in effetti è del tutto analogo a un database classico Oracle, però ci si possono attaccare dei “Pluggable Database (PDB)” che in realtà sono una collezione di schemi con i relativi datafile e tempfile. L’undo, come il redo e l’istanza è gestita dal CDB. Il PDB si porta dietro anche un catalogo (tablespace SYSTEM) che, credo, (devo ancora approfondire) contenga il catalogo relativo al solo PDB, cataloghi relativi a feature come Spatial (per dirne uno che mi viene in mente) con lo schema MDSYS credo sia contenuto, gestito e condiviso dal CDB.

Un CDB contiene almeno almeno due “container” (secondo la terminologia Oracle), uno chiamato PDB$ROOT o semplicemente root che contiene i metadati comuni a tutti e impropriamente credo possa essere usato anche come database Oracle normale e un “seed PDB”, chiamato PDB$SEED, che è un template per creare nuovi PDB all’interno del CDB. Possono essere creati/attaccati fino a 253 PDB in un CDB. Fin qui si parla di una sorta di nuovo livello di astrazione, la cosa importante e forse più interessante è che i PDB sono PDB appunto perché possono essere “staccati” e “attaccati”  (unplugged & plugged) fra diversi CDB. Un PDB a livello fisico è un insieme di datafile e un file XML che è il descrittore del PDB, tramite questo XML si può attaccare il PDB su un nuovo CDB in modo abbastanza semplice. Queste operazioni possono essere fatte da “Cloud Control”, (che io non ho ancora visto) o da SQL*Plus. Un PDB può essere creato da zero partendo quindi dal PDB$SEED oppure clonando un’altro PDB, cosa questa che pare interessante.

Questo tipo di architettura in prospettiva è sicuramente molto interessante, guardando al presente o al massimo al futuro prossimo o alla realtà in cui lavoro io devo dire che per me è di scarsa utilità. Prima di tutto  dove lavoro io ci sono si diversi database che potrebbero essere consolidati, c’è un solo problema: sono ancora su versioni diverse, 9iR2 (ormai a esaurimento per fortuna) 10gR2 e 11gR2. Passare alla nuova archiettura multitenant significa anche migrare la versione, quindi è una cosa fattibile solo in alcuni anni, molto gradualmente (per fare un esempio, un nostro grosso cliente sta migrando ora da Oracle 10gR1 a 11gR2…). Un altra cosa da non sottovalutare è che questa caratteristica è un’opzione dell’Enterprise Edition, non ho idea di quanto costi, ma sicuramente non è alla portata di tutti, richiedendo appunto EE. E’ anche vero che questa pare essere proprio una caratteristica/funzionalità “Enterprise” :)

Un database comunque può essere creato non-CDB, quindi sarà del tutto analogo a un classico database oracle come lo abbiamo finora conosciuto fino alla versione 11, non è possibile passare da un database non-CDB a uno CDB e viceversa.

Dopo aver letto il capitolo 17 del manuale “Concepts”, si può passare ad approfondire con la lettura del manuale “Administrator’s Guide, a partire dal capitolo 36.

Concludo con un solo piccolo accenno alla interfaccia di amministrazione del database fornita di default, chiamata ora “Enterprise Manager Express”, implementata direttamente nel database tramite XDB, quindi non più esternamente tramite OC4J come in precedenza, questo significa ad esempio che se il DB è giu non risponde neanche la console. Graficamente sembra un po’ più moderna e “cool” più compatto, ma mi pare con molte meno funzionalità, ad esempio non trovo l’interfaccia per lo scheduler, immagino sia stato demandato al “Cloud Control” ma devo indagare. In ogni caso qualche problemino c’è, ne ha parlato anche Dizwell.

P.S.

naturalmente prima di poterne parlare non ho solo letto i manuali ma ho anche provato a installare la nuova versione e creato un nuovo database su una macchina con Oracle Linux 5 64 bit.

About these ads

5 commenti »

RSS feed dei commenti a questo articolo. TrackBack URI

  1. Complimenti per l’articolo, sono versamenti casi unici trovare articoli come questo in italiano

    • grazie, anche se in realtà ci sarebbe da fare ancora qualche precisazione e approfondimento

  2. […] fare qualche aggiunta e precisazione al mio post precedente sull’argomento. Recentemente ho fatto ulteriori test, su una macchina virtuale, […]

  3. L’ho scaricata ed installata in locale. Devo dire che già il primo impatto è stato duro, non sono riuscito nemmeno a creare un utente con la sintassi classica. Immagino sia legato al discorso del CBD non CBD che hai fatto nell’articolo.

    • Beh, un’altra delle caratteristiche basilari della nuova struttura è la presenza di utenti ‘globali’ o meglio ‘common users’. Se crei un utente da un CDB (ovvero un utente common) allora non potrà chiamarsi pippo, ma C##pippo :)
      Conviene riferirsi alla guida…


Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Crea un sito o un blog gratuitamente presso WordPress.com. | The Pool Theme.
Entries e commenti feeds.

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 71 follower

%d blogger cliccano Mi Piace per questo: