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!
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'!
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!
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.
... 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!
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...
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:
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'...
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):
Vi assicuro pero' che tale possibilita' e' stata sfruttata da pochi!
Anche della 8 scrissi qualcosa su Novita' della versione Oracle 8.0.
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.
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.
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.
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, ...
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)
Ed il futuro? Per me non posso sapere...
Curiosi? Leggete: Le 10 cose che vi faranno impazzire di Oracle 10g!
Molte cose sono avvenute in questi ultimi anni:
Ma l'elemento piu' importante... e' stabile e richiede sempre meno interventi da DBA!
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'.
Siamo nel 2012: ci sara' la fine del mondo?
Nello strano mondo delle
Applications
la versione 12 e' gia' arrivata!
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.
Oppure uscira' la versione 12 di Oracle?
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!
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!
...il nuovo anno portera' una trasformazione e tutti quanti stiamo gia' aspettando...
Uno sguardo ufficiale al futuro e' dato dalla pagina
Release Schedule of Current Database Releases (Doc ID 742060.1).
Anno 2018? Versione 18!
[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].
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).
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!
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.
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.
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!
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:
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!
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.
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.
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).