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 non e' affatto serio o importante! Quindi 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 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!
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 commercializzato nel 1979 con la versione 2 (la 1 non e' mai uscita). Alla versione 3, riscritta in C, vennero aggiunti COMMIT e ROLLBACK. 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) 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 due 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 volentieri la versione dell'RDBMS! In poco tempo bisogna aggiornare un bagaglio di conoscenze che ha richiesto anni a formarsi.
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 per 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 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 (Plugable 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!

... 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!

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).
La pagina seria riporta ulteriori informazioni come (eg. matrici di compatibilita', prerequisiti, ...) che cerco di tenere aggiornate.
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 Marzo 2003
Versione: 1.0.17 - 1 Luglio 2013
Autore: mail@meo.bogliolo.name