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 sarebbe molto utile... Ma l'autore non e' ne serio ne importante! Quindi 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 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
con la versione 2 (nel 1979, la 1 non e' mai uscita).
Nella 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'!
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, 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!
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.
... 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' 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 quasi 20 anni)
ragiono su come funziona Oracle 6... probabilmente 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 qualche nuova release!
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 bench.
Avevo come vantaggio la possibilita' di fingermi un DBA,
un sistemista Unix, un programmatore, un analista, ...
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 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'.
E la morale? Beh con Oracle potrebbe essere solo questa:
Ebbero tante istanze e vissero felici e contenti!
Ma non bisticciano tutti assieme? Un poco!
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 Metalink che richiede un accesso registrato).
Se non avete un accesso sulle pagine del supporto Oracle potete leggere
questo documento
(eg. matrice di compatibilita',
prerequisiti, ...) che cerco di tenere aggiornato.
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).
Siamo nel 2012: ci sara' la fine del mondo?
Nello strano mondo delle
Applications
e' gia' arrivata!
Oppure uscira' la versione 12 di Oracle?
Testo: C'era una volta Oracle
Data: 14 Marzo 2003
Versione: 1.0.16 - 1 Aprile 2012
Autore: mail@meo.bogliolo.name