Oracle 12cR2 for DBA

La disponibilita' on-premise della versione 12cR2 di Oracle [NdE 6 marzo 2017] e' un argomento troppo importante per non analizzarlo compiutamente.
Non si tratta solo di una release di consolidamento, come Oracle ci ha abituato con molte Release 2, ma di una nuova versione con importanti e significative novita' per la gestione e per l'utilizzo di Oracle anche in Cloud. Le modifiche della versione 12cR2 sono tanto importanti e significative che cambieranno, a mio avviso, la progettazione di architetture ed il modo di lavorare per chi amministra database Oracle.

Questo documento riporta le principali novita' introdotte nella nuova versione sottolineando le operative che hanno maggior impatto per la bistrattata categoria dei DBA.

Il taglio del documento e' pratico. Dopo una noiosa introduzione [NdE che si puo' saltare 🙂] con le diverse release della versione 12c e la descrizione dell'opzione multitenant si passa a semplici esempi per ogni funzionalita' descritta.
Gli esempi riguardano il Multitenant, gli Application Containers, l'In-Memory, lo Sharding, il Cloud, ...
Nonostante l'utilizzo di esempi per leggere questa pagina e' necessaria una buona conoscenza dell'RDBMS Oracle e delle problematiche DBA.

Funzionalita' Oracle 12c

La versione 12c e' disponibile da luglio 2013 con molte novita' nell'architettura: Flex Cluster, Multithreaded model, Enterprise Manager Database Express, Heat Map, RMAN single table restore, clausola LIMIT, ...
Oltre a queste e' stata sopratutto introdotta la Multitenant Option. In tale architettura l'istanza del CDB (Container Database) mantiene al suo interno diversi PDB utilizzando lo stesso set di processi e di strutture interne. Dal punto di vista delle applicazioni invece i PDB vengono visti come normali istanze Oracle. Sono pero' presenti una serie di limitazioni sui PDB (Pluggable Database): non sono infatti supportati sui PDB: Character Set differenti, l'Active DataGuard, il Flashback, l'Hot Clone [NdA ed anche il clone aveva qualche problemino], ...

La versione 12.1.0.2, disponibile da luglio 2014, ha introdotto l'Option In-Memory ed una serie di funzionalita' minori ma molto utili (eg. advanced index compression, JSON support, avvio automatico dei PDB, molteplici variazioni sul PDB cloning, ...). L'architettura non-CDB e' deprecata con questo rilascio.

La versione 12c R2, 12.2.0.1 disponibile in Cloud da novembre 2016 ed on-premise da marzo 2017, presenta ulteriori nuove funzionalita' come lo Sharding, l'In-Memory su ADG, ...
Ma nella 12cR2 e' sopratutto l'opzione Multitenant ad essere stata arricchita di nuove funzioni e liberata da molti limiti in modo da renderla realmente efficace nel consolidamento di istanze Oracle e nell'integrazione con i servizi Cloud.

Multitenant Option in 12cR2

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 del database Oracle.
Nella versione 12cR2 l'opzione multitenant trova la sua compiuta espressione: sono supportati character set diversi tra il CDB ed i PDB, sono supportati molti piu' PDB (da 252 a 4096), e' supportato il flashback database a livello di PDB, e' supportato l'Hot Cloning dei PDB, le statistiche AWR sono a livello di PDB, gli undo sono a livello di PDB, e' possibile configurare/limitare i parametri di memoria e di I/O per PDB [NdA l'eventuale limitazione dei parametri di CPU era gia' possibile con il DBRM in 12c Release1], il DG Broker puo' effettuare un PDB failover [NdA vanno usati due CDB per nodo per i ruoli Primary e Secondary], l'Heat Map e' disponibile anche per le architetture CDB, sono disponibili gli Application Containers, sono disponibili i Proxy PDB, sono disponibili i Refreshable PDB, ...

Architettura Multitenant in Oracle 12cR2 Nell'architettura Multitenant l'istanza CDB mantiene al suo interno piu' PDB utilizzando lo stesso set di processi e la stessa SGA (System Global Area). Le componenti di sistema (eg. control file, redo log, spfile, ...) sono relative al solo CDB. Alcune componenti (eg. data dictionary) sono disponibili a piu' livelli mentre altri sono specifici del PDB. La creazione di un'utenza e' locale al DB cui si e' connessi ma e' possibile creare nel CDB utenze comuni per tutti i PDB. Le utenze comuni sono tipicamente utenze amministrative o di controllo. In un PDB possono essere definiti tablespace temporanei, ma se non viene fatto si utilizza il tablespace temporaneo del CDB. Gli undo, presenti solo nel CDB in 12cR1, possono essere invece anche essere presenti a livello di PDB in 12cR2, anzi e' questa la configurazione di default e che offre le funzionalita' piu' complete [NdA Local Undo Mode]. Infine i datafile sono separati semplicemente raccolti in una directory con nome uguale al nome del PDB; i datafile possono utilizzare la modalita' OMF (Oracle Managed Files),

L'attivazione di un CDB avviene come quella di una normale instanza con il comando di startup da SQL*Plus. I PDB vanno invece aperti esplicitamente con un comando di OPEN, altrimenti per default sono in stato MOUNTED e quindi non accessibili.

Dal punto di vista applicativo i PDB sono completamente separati ed utilizzano oggetti, data dictionary, utenti, ... come se fossero istanze dedicate.

Multitenant by Example

Il multitenant della 12cR2 cambiera' in modo significativo l'attivita' del DBA. Alcune attivita' risultano terribilmente piu' semplici, altre risultano simpaticamente differenti... Riassumendo molto un PDB e' un'istanza piu' semplice da gestire: ma cosi' abbiamo davvero riassunto troppo!

Vediamo ora esempi pratici sul multitenant:

Riassumendo: l'opzione Multitenant cambia in modo significativo il modo di lavorare con Oracle rendendo piu' semplici una serie di operazioni complesse (eg. cloning) e consentendo di ottenere un significativo consolidamento delle istanze Oracle.
E' sicuramente da studiare e da valutare con molta attenzione per un impiego a breve.

Application Containers by Example

Con la 12cR2 la tecnica dei Pluggable database puo' essere utilizzata anche per la gestione delle applicazioni. E' infatti un problema comune quello di gestire diversi ambienti applicativi (sviluppo, test, collaudo, pre-produzione, golden copy, ...) che condividono strutture e dati comuni.

Gli Application Container consentono di centralizzare la definizione delle tabelle utilizzate da un'applicazione come struttura e/o come dati per tutti i PDB applicativi. La sintassi e' quella gia' vista per il multitenant.

Vediamo ora gli esempi pratici:

Riassumendo: gli Application Container sfruttano l'opzione Multitenant anche per gli aspetti di progettazione applicativa.
Da studiare con attenzione dai DBA applicativi e dai progettisti.

In-Memory by Example

L'opzione In-Memory consente significativi vantaggi prestazionali nelle interrogazioni con dati raggruppati su tabelle di grandi dimensioni (le tipiche ricerche sui DSS e sui DWH). Si tratta di una nuova Option della versione 12c (12.1.0.2). Dalla 12.2 e' possibile utilizzare l'opzione In-Memory su Active Data Guard rendendo ancora piu' significativo l'utilizzo del secondary quale sistema per il reporting.

Vediamo ora esempi pratici sull'opzione InMemory:

Riassumendo: l'opzione In-Memory si attiva facilmente e si prova altrettanto facilmente. Su alcune applicazioni presenta notevoli vantaggi prestazionali (eg x10) mentre su altre applicazioni non vi e' nessun miglioramento.
E' opportuno provarla per verificare gli eventuali vantaggi sulle applicazioni. Se sono significativi si puo' adottarla (e' una Option...).

Sharding by Example

Oracle Sharding e' stato introdotto in Oracle 12c R2 e consente di suddividere i dati in shard ospitati su database differenti separati anche geograficamente. Lo sharding puo' essere immaginato come un'evoluzione del partitioning: ogni partizione di una sharded table e' posta su un tablespace differente ed ogni tablespace e' assegnato ad uno shard.

Lo sharding Oracle utilizza un'architettura shared nothing con il supporto completo dell'SQL e delle transazioni: i nodi sono costituiti da istanze Oracle indipendenti.
Dal punto di vista applicativo non vi e' nessuna differenza nonostante gli shard non sono sullo stesso nodo ma su nodi diversi: i listener indirizza le richieste allo shard corretto ricevendo la chiave di partizionamento.

Vediamo ora alcuni esempi pratici sulla nuova opzione di Sharding:

Riassumendo: opzione da conoscere da parte di un DBA.

Il Cloud con Oracle 12cR2

Sull'Oracle Public Cloud avevo gia' scritto un paio di paginette: come accedere ed utilizzare i DB. In pratica c'e' tutto: IaaS, PaaS e SaaS sia senza, ma soprattutto con l'RDBMS Oracle.

Per utilizzare da remoto un DB su Oracle Public Cloud basta abilitare l'accesso: Abilitare accesso SQL*Net in Cloud

E scaricare le credenziali: Scaricare il Wallet da Oracle Public Cloud

A questo punto e' possibile accedere dalla propria rete con tutte le applicazioni/tool alle basi dati in Cloud.

Riassumendo: alcune cose con il Cloud si fanno bene e con costi minori: la remotizzazione dei backup e la creazioni di ambienti temporanei sono due esempi. Anche l'implementazione del Disaster Recovery in Cloud presenta vantaggi.
Per altre implementazioni va studiata l'architettura: tra Application Server e Database Server non vi deve essere una elevata latenza per gli accessi.
E' chiaro infine che su alcuni ambienti l'utilizzo con vantaggio del Cloud e' molto limitato.

L'architettura in Multitenant da un vantaggio per l'utilizzo del Cloud: rende trasparenti gli accessi. Ma e' anche vero che il Multitenant puo' ottenere vantaggi dal Cloud: e' possibile spingere molto di piu' sul consolidamento sapendo che e' possibile utilizzare per i picchi la remotizzazione dei servizi.

12cR2 by Example

Abbiamo visto diversi esempi pratici, ma non si finisce mai di imparare!

Varie ed eventuali...

Il sito ufficiale riporta tutte le informazioni sulla versione Oracle 12cR2.

Sulla precedente versione Oracle 12c Release 1 avevo scritto questa pagina.


Titolo: Oracle 12c R2 for DBAs
Livello: Avanzato (3/5)
Data: 6 Marzo 2017
Versione: 1.0.2 - 1 Aprile 2017
Autore: mail [AT] meo.bogliolo.name