C'era una volta Oracle

C'era una volta Oracle,

cosi' iniziano tutte le favole... e cosi' inizia anche questo documento che riporta versioni e caratteristiche del diffuso database relazionale Oracle.

Si tratta naturalmente di una cosa molto seria ed importante. Molti sono i DBA (Data Base Administrator) che utilizzano l'Oracle RDBMS nelle sue differenti versioni ed una guida sulle diverse funzionalita' e caratteristiche presenti in ciascuna versione sarebbe molto utile...

Ma l'Autore [NdA ovvero io] non e' affatto serio o importante! Quindi l'autore raccontera' la cosa a modo suo, anzi a modo mio!

Preistoria

La prima volta che mi sono imbattuto in Oracle erano i tempi in cui i database relazionali erano considerati piu' un giocattolo che altro. Venivano utilizzati quasi solo per estrarre dati, avevano prestazioni impredicibili per un uso serio, erano distribuiti su piattaforme definite mini, disponevano di strani ambienti a carattere per lo sviluppo delle applicazioni (IAG, IAP, RPF, ...), certo non c'era paragone con gli imperanti database gerarchici o reticolari dei tempi ospitati sui mainframe!
Non sarebbero mai riusciti a sostituirli, alcuni dicevano...

Oracle fu praticamente il primo relazionale in commercio (il System-R di IBM, cui e' dovuta l'origine dei relazionali, non venne praticamente distribuito) e venne reso disponibile nel 1979 direttamente partendo con la versione 2 (la 1 non e' mai uscita). Alla versione 3, riscritta in C, vennero aggiunti COMMIT e ROLLBACK, ovvero la gestione delle transazioni che e' una funzionalita' non da poco. Ma ancora piu' importante fu il porting al sistema Unix che divenne poi la piattaforma di maggior diffusione. La versione 4 supportava la read-consistency. Nella versione 5 venne introdotto il modello Client/Server.
Ma tutto questo e' un lontano ricordo... allora io studiavo il QBE e l'algebra relazionale all'universita'!

5.1

Correva l'anno 1986... Il tempo di finire gli studi e cercare un lavoro (facilissimo allora per un informatico) ed era disponibile la versione 5.1 di Oracle. Il prodotto era ormai completamente maturo e veniva definito RDBMS (Relational Database Management System). Parecchie le caratteristiche interessanti:

Non per nulla la diffusione di Oracle sulle piattaforme Open era ottima (seguivano Informix, Ingres, Adabas ed Unify).
Dopo poche settimane di lavoro tenevo gia' il mio primo corso su Oracle... non c'e' nulla di meglio per imparare in fretta!

6.0

Il passaggio alla 6.0 fu il mio primo cambio di release con Oracle. Terribile! Dopo aver tenuto corsi in giro per il mondo e su ogni argomento connesso ad Oracle, finalmente conoscevo bene il prodotto. Perche' dovevano cambiarlo?

Le variazioni introdotte nella 6.0 erano notevoli:

Non pensavo di sopravvivere... comunque capii in fretta perche' un DBA non aggiorna mai volentieri la versione di un database! In poco tempo bisogna aggiornare un bagaglio di conoscenze che hanno richiesto anni per essere raccolte.
Mi gettai in uno studio matto e disperatissimo... era il 1988.

7.0

... Sopravvissi al cambio di versione con la 6.0!
Ma cambiai mestiere: da docente a progettista (e sviluppatore). Quindi per me Oracle era diventato strumento con cui realizzare applicazioni. La palestra di docente era stata molto utile, conoscevo molto bene il prodotto. Scoprii che era quasi un'eccezione! E' curioso, ma nello strano mondo della consulenza informatica sapere quello che si sta facendo non e' poi cosi' comune...
Per questo, forse, decisero nuovamente di cambiare versione!

Nel 1992 la 7.0 introdusse parecchie novita':

Parecchie novita' quindi... Ma c'e' da dire che l'architettura di base, ovvero il modo di funzionare della base dati, non cambio' comunque molto!
Per cercare un problema ancora adesso (che sono passati oltre 20 anni) ragiono su come funzionerebbe Oracle 6... a volte sbaglio su qualche dettaglio, ma spesso azzecco la soluzione!

L'ottimizzatore cost based era una grossa novita'. Tanto grossa che perche' funzionasse veramente bisogno' aspettare la release successiva!

7.1

Oracle cominciava ad essere molto diffuso sia presso grossi clienti con DB complessi e di grandi dimensioni, sia in realta' piu' semplici. Comunque per tutti l'esigenza era la stessa: avevano in casa un DB Oracle ma quando non funzionava non sapevano che fare. C'era bisogno di un DBA!

A volte, come con un bacio alla bella addormentata, bastava modificare un parametro per risvegliare un DB dal suo torpore.
Altre volte si combatteva ricostruendo oggetti, con sane pulizie e combattendo contro la frammentazione per sconfiggere il mostro delle cattive prestazioni!
La favola dell'RDBMS Oracle continua... ed io lo seguo con una nuova veste: l'amministratore di database.

Anche la 7.1 introdusse qualche novita':

Funzionalita' interessanti ma non tutte immediatamente sfruttabili...

7.2

C'era ancora parecchia concorrenza nell'area degli RDBMS relazionali e, come ancora oggi, c'era concorrenza tra fornitori HW. Un'attivita' molto diffusa era quella del Benchmarking. Prendere un DB e farlo andare il piu' veloce possibile: finche' non si schianta, bellissimo!
Quando si schianta bisogna fare quello che fanno i fisici con un sincrotrone: guardare i pezzi dopo lo schianto, cercare di capire qualcosa, cambiare qualche parametro a caso e lanciare di nuovo tutto il piu' in fretta possibile!
E' un'attivita' che richiede una buona preparazione tecnica ma che da' parecchie soddisfazioni e, soprattutto, la possibilita' di imparare da altri esperti. Per mia fortuna riuscii a partecipare a parecchi benchmark. Avevo come vantaggio la possibilita' di fingermi un DBA, un sistemista Unix, un programmatore, un analista, ... a seconda delle necessita'!

Nel frattempo era uscita una nuova versione la 7.2 con novita' che andavano in direzioni diverse:

7.3

La gestione di un DB Oracle stava diventando una cosa seria. Le basi dati relazionali erano oramai uno strumento fondamentale per le aziende ed avevano sostituito i legacy in molti casi. Iniziavano anche i primi grandi progetti di DWH (Data WareHouse) e mi ritrovai a seguirne alcuni...

Oracle usci' con una delle versioni migliori, dal punto di vista di stabilita', adatta anche a questo tipo di basi dati. Forse in ritardo rispetto alla concorrenza... ma non rispetto al mercato.

La 7.3 introdusse una serie di novita':

Ma elimino' anche il supporto di alcuni prodotti in precedenza molto utilizzati: Come in tutte le versioni fu necessario attendere qualche sottorelease perche' il tutto si assestasse per bene: la 7.3.4 fu la release definitiva.

Dato che oramai avevo imparato a scrivere... cercai di riassumere gli aggiornamenti nel documento Novita' della versione Oracle 7.3 cui vi rimando se volete qualche dettaglio in piu'...

8.0

In quel periodo cominciai ad interessarmi di architetture ed a nuovi linguaggi di programmazione come java, certo c'entrava anche oracle ma... puo' essere definito un periodo di separazione!

Il passaggio alla 8 (1997) e' un cambio di major release. E' ovvio che i cambiamenti debbono essere grandi. Poiche' era la moda del momento la 8 fu la versione lanciata commercialmente come object oriented!

In realta' le novita' introdotte erano notevoli ed interessanti ed andavano anche a coprire funzionalita' su cui Oracle era carente (eg. DB multidimensionali, parallel processing):

Anche della 8 scrissi qualcosa su Novita' della versione Oracle 8.0.

8i (8.1.5 8.1.6 8.1.7)

Non mi stavo occupando direttamente di Oracle ma, per laidi motivi (non pagare la partecipazione a qualche convegno internazionale), mi capito' di scrivere e presentare un paio di paper su Oracle, sicurezza ed architetture web.

Anche la Oracle si accorse di Internet, questa volta in anticipo rispetto agli altri vendor di RDBMS, uscendo con una serie di versioni che introducevano parecchie novita' in questa direzione: oracle 8i (1999). Non tutte le innovazioni introdotte erano immediatamente stabili... quindi le riporto tutte assieme.

Ecco le novita' raggrupate per versione:

Da come si puo' vedere l'evoluzione e' stata notevolmente guidata dall'introduzione di nuove architetture adatte ad Internet.
La versione 8.1.7.4 e' una delle piu' diffuse poiche' molto stabile ma soprattutto perche' mantiene la compatibilita' all'indietro con l'SQL*Net ed e' supportata per l'upgrade alle versioni successive.

9i (9.0.1)

Per rinnovarsi e crescere a volte bisogna rinuciare a qualcosa... in questo periodo mi tocco' rinunciare alle attivita' tecniche ed ai progetti per vedere ROI, IPO, ... molto meno divertenti.

La stessa cosa succede ad Oracle. La 9i (2001) infatti rinuncia a qualcosa:

Le novita' sono invece:

Un accenno ulteriore meritano le LMT (Locally Managed Tablespaces) che eliminano la gestione dello spazio con il NEXT e le ASSM (Automatic Segment Space Management) tablespaces che escludono la gestione di PCTUSED, ... a favore di una gestione a bitmap dei blocchi. La nuova gestione degli spazi da' meno lavoro ai DBA, ha vantaggi prestazionali (non sempre...) e rende piu' efficiente il RAC.

9i R2 (9.2)

Tutto pero' ritorna... ed eccomi di nuovo a lavorare, davvero! Installare, configurare, programmare, fare debug, ... su Unix Enterprise piu' che su un DB, ma le applicazioni sono sempre appoggiate su Oracle: questo e' il vero divertimento!

Intanto esce la 9.2 (2002). Ecco le novita':

Ma la "novita'" piu' importante e' molto piu' banale. La 9.2.0.8 un'ottima versione per stabilita' ed efficenza! Quindi e' una versione molto diffusa.

10g

Altra parentesi che mi allontana, ma di poco, dall'RDBMS. In questo periodo mi occupo piu' di Application Server Oracle che di DB. Sempre di Oracle si tratta, o meglio anche di Oracle si tratta, ma le competenze e le attivita' da svolgere sono completamente diverse!

Intanto (2003) esce la versione 10 denominata Grid in cui si enfatizzano le possibilita' di utilizzo del grid computing. In realta' la sfida si sta giocando su altre direzioni... ed Oracle viene spinto sempre piu' sul mondo Linux ed entra nel mondo del Free Source (con CFS ed InnoDB). Il mondo non si ferma ed e' gia' in produzione la 10g R2 (final: 10.2.0.4 ma da tempo si sussurrava della 10.2.0.5 ed infine arrivo').

Ecco un riassunto delle nuove funzionalita': "/ as sysdba", espressioni regolari, Flashback, EM (fully featured), Data pump compression, ...
Curiosi? Leggete: Le 10 cose che vi faranno impazzire di Oracle 10g!

11g

Per Oracle la versione piu' recente e' la 11g! E' uscita per Linux 32bit il 14 Agosto 2007 (l'ho installata il ferragosto per provarla subito). Onestamente non vi sono grandi novita' rispetto alla versione 10, nonostante le dichiarazioni marketing: la client cache, una gestione piu' flessibile dei temporary tablespace, l'ADR e la compilazione del PL-SQL sono le principali novita'. Vengono fatte promesse strabilianti sulla robustezza e sulla stabilita'... Ma la vera sfida sembra verso l'Open Source.

Varie ed eventuali (Aggiornamento 1 Aprile 2010)
Molte cose sono avvenute in questi ultimi anni:

Le nuvole

Ed il futuro? Per me non posso sapere...
E' difficile avere il coraggio di cambiare e rinunciare a qualcosa del passato: la quantita' di versioni obsolete di database ancora da migrare e' incredibile!

Ma la moda del momento e' il Cloud Computing cosi' anche Oracle, dopo qualche perplessita' iniziale, sta seguendo la corrente. Navigare in acque difficili e' impegnativo... ma le sfide mi piacciono sempre! Rileggete questa pagina tra qualche tempo, ci saranno le novita'.

2012: la fine del mondo?

Siamo nel 2012: ci sara' la fine del mondo?
Oppure uscira' la versione 12 di Oracle?

Nello strano mondo delle Applications la versione 12 e' gia' arrivata!

12c

Finalmente dopo una lunga attesa [NdE luglio 2013] la conferma, siamo sulle nuvole: e' uscita la versione 12c!

La novita' principale e' la nuova opzione Multitenant che consente di montare piu' PDB (Pluggable Database) sulla stessa istanza container detta CDB (Container Database). Si tratta di una variazione significativa dell'architettura che consente una gestione piu' flessibile delle istanze/database Oracle in ottica di servizio. Dal punto di vista logico i PDB sono completamente separati ed utilizzano un differente servizio listener, data dictionary distinti, utenti diversi, ... e naturalmente datafile separati.
Altra modifica architetturale, sempre nell'ottica della semplificazione, e' la possibilita' di utilizzare thread anziche' processi riducendo notevolmente il footprint della base dati [NdE bello footprint... ma vuol dire solo che pesa di meno].

Insomma e' come in una famiglia allargata: alcune cose sono in comune, altre sono separate, ... se c'e' un po' di buon senso tutto pesa molto meno!

Molte sono anche le nuove funzionalita' della 12c che arricchiscono opzioni gia' presenti in 11g (eg. RAC, Advanced Compression, Active Data Guard, Information Lifecycle Management, ...). Ma la novita' che preferisco, forse banale ma certo molto utile, e' il restore di una singola tabella con RMAN!

Nonostante la crisi la tecnologia avanza e, nell'estate 2014 esce una piccola release [12.1.0.2] che contiene l'opzione In-Memory. In-Memory promette prestazioni eccezionali per query analitiche, senza alcuna modifica alla base dati ed alle applicazioni, sfruttando la memoria del server ospite: niente male!

12cR2

Moltissime le novita' per una versione veramente sulle nuvole!
La versione 12cR2 e' disponibile infatti prima sul Cloud [NdE 2016-11] e poi per l'installazione in locale [NdE 2017-03].

Viene ulteriormente aggiornata l'opzione Multitenant eliminando alcuni limiti e fornendo un maggior controllo sulle risorse e sulle performances; viene introdotta l'opzione di Sharding per distribuire le basi dati su datacenter differenti; vengono rese disponibili on-line una serie di operazioni (partitioning, encryption, DBVault simulation); ...

Insomma la vita del DBA cambiera' ancora!

18.1

...il nuovo anno portera' una trasformazione e tutti quanti stiamo gia' aspettando...
Anno 2018? Versione 18!

Oracle Planned Releases

Uno sguardo ufficiale al futuro e' dato dalla pagina Release Schedule of Current Database Releases (Doc ID 742060.1).
[NdA dal 15 Agosto 2017 sono in roadmap le versioni 18 e 19, anche se in realta' saranno release annuali].
[NdE aggiornamento: la 18c e' disponibile da febbraio 2018 per Exadata, da marzo per gli altri Enginered ed il Cloud ed infine e' prevista da luglio per tutti gli altri ambienti On-Premises].

2019

Questo e' l'anno della versione 19 che e' l'ultimo rilascio della versione 12!
In effetti la 19 corrisponde alla 12.2.0.3: e' la versione terminale della 12.2 ed e' una LTS (Long Term Support release).

Oracle Planned Releases - 2019

Importanti novita' anche sulle Edition: nel frattempo e' arrivata anche una Oracle XE 18c e la Standard Edition 2 non avra' piu' il RAC a partire dalla versione 19!

20c

Difficile predire il futuro... ma la 19 e' una LTS e la 20 e' disponibile solo in preview su Cloud. Non penso che ne installeremo molte o che ne sentiremo molto parlare in futuro.
Nonostante questo ci sono diverse novita' interessanti [NdA copiando dal mio sito preferito]: Blockchain native tables, JSON binary datatype, Automatic In-Memory, Standby Result Cache in Active DG, fine-grained resource model, SQL macros, ... Il titolo 20c Innovation Release e' comunque meritato, forse un po' meno quello di converged database.

21c

L'anno 2020 e' stato purtroppo segnato piu' da un virus, non informatico, che da altro... quindi poche novita' dal punto di vista tecnico. Su Oracle la versione 21c sostituisce la release precedente come Innovation Release.
Disponibile anche con l'edition gratuita Oracle XE 21c.

Resta confermata la versione 19c come LTS che e' la versione di riferimento per tutte le nuove installazioni.

2022

Ne restera' solo uno!
Non e' proprio cosi' con le versioni Oracle... ma il supporto di tutte le versioni precedenti andra' a scadere e la versione 21 e' sperimentale: l'upgrade alla versione 19c e' sempre piu' urgente, ne restera' solo una!

Oracle Planned Releases - 2022

2023

Ne restera' solo una!
Anche quest'anno la versione supportata pienamente e piu' a lungo e' Oracle 19c: e' questa la versione da installare o a cui aggiornare una precedente versione.
L'immagine ufficiale (Doc ID 742060.1) e' simile alla precedente:

Oracle Planned Releases - 2023

In realta' per quest'anno e' prevista una nuova LTS che raccogliera' le novita' introdotte nelle versioni 20c e 21c ed altre novita'. Ma i rilasci e l'adozione della 23c potrebbero essere un poco rallentati e diventare significativi solo nel 2024.

April the 1st: gia' disponibile la Oracle Database 23c Free - Developer Release!

2024

Nel 2024 sara' disponibile la... 23ai su tutte le piattaforme.
Per l'upgrade e' necessario partire da una Oracle 19c, il cui supporto e' stato prolungato, e quindi sara' ancora utilizzata in modo significativo.

Oracle Planned Releases - 2024-01

Sono molte le novita' della versione 23c: modello JSON/Relational, JavaScript nelle Stored Procedures, OKafka ovvero implementazione Kafka mediante TxEventQ (Transactional Event Queues), UPDATE e DELETE con join, clausola FROM non obbligatoria (quindi non serve piu' il classico FROM DUAL), datatype BOOLEAN, numero massimo di colonne per tabella portato a 4.096, privilegi a livello di schema, ... e desupporto delle architetture non CDB [NdA in realta' le architetture non CDB erano gia' state desupportate nella 20c e nella 21c, ma siccome praticamente nessuno le ha usate, praticamente nessuno se ne e' accorto].

Ma non da ultimo va riportata l'importanza data all'intelligenza artificiale sottolineata, anche per ragioni di marketing, con il cambio di nome da 23c a 23ai (AI: Artificial Intelligence) al momento del rilascio in Cloud della nuova versione. L'AI Vector Search e' la nuova funzionalita' integrata nel database di cui vedremo sicuramente le magnifiche sorti e progressive.

... e vissero felici e contenti

Qual'e' la morale di questa storia? Beh con Oracle puo' essere che questa:
Ebbero tante istanze e vissero tutti felici e contenti!

Ma nella realta' non bisticciano tutti assieme? Un poco...
Per questo ho scritto anche una pagina piu' seria: Your Oracle database stinks! La pagina seria riporta ulteriori informazioni come (eg. matrici di compatibilita', prerequisiti, ...) che cerco di tenere aggiornate.

Sulle compatibilita' tra versioni client e server e' opportuno consultare: Nota 207303.1, mentre per verificare i requisiti dell'installazione il riferimento e': Nota 169706.1 (sono pagine pubblicate su MOS, il sito di supporto Oracle che una volta si chiamava Metalink e che richiede un accesso registrato).
Piaciuta la favola? Una storia analoga e' quella sulla parte Application Server mentre non ho avuto il coraggio di scriverla per gli ambienti di sviluppo e per il magico mondo ERP di Oracle Applications o meglio EBS (NdA ma con un po' di pazienza... E-Business Suite).


Testo: C'era una volta Oracle
Data: 14 Febbraio 2003
Versione: 1.0.24.2 - 1 Aprile 2024
Autore: mail@meo.bogliolo.name