ORA-01555 e “The black box approach”

lunedì 2 aprile 2007 alle 02:18 | Pubblicato su Diario, Installation and Configuration | Lascia un commento

Il codice d’errore Oracle probabilmente più conosciuto. Sfortuanatemante non dai programmatori, ma dai DBA. Thomas Kyte nel primo capitolo del suo libro “Expert Oracle” dedica una sezione al cosiddetto “black box approach”. L’approccio scatola nera è quello che molte volte gli sviluppatori software hanno nei confronti del database, e secondo Kyte è quello che molto spesso determina il fallimento di un progetto. Egli argomenta molto bene questa tesi e anche la mia esperianza di DBA mi porta a sposare in pieno questa tesi. Un esempio è l’errore ORA-01555, un errore che si genera da una combinazione della configurazione del database e delle tecniche di implementazione applicative. Esso si genera da una di quelle caratteristiche che secondo Thomas Kyte distingue Oracle da altri RDBMS cioè la gestione della consistenza e delle concorrenza, da quella caratteristica chiamata “Multi-Versioning”.

Per un programmatore che vede Oracle solo come una scatola nera è naturale vedere ORA-01555 come un errore e basta, in realtà come ho già detto sopra è un errore che viene determinato si dalla configurazione di Oracle (competenza solitamente del DBA) ma anche da come è fatta l’applicazione. In buona sostanza per fornire quella incredibile caratteristica che si chiama “Multi-Versioning” Oracle usa i Segmenti di UNDO, quindi spazio su disco. La dimensione di questi segmenti limita la possibilità di Oracle di mantere più versioni di un dato per un tempo infinito.

Per il target di clienti della nostra azienda, che confrontati con gli esempi riportati nella letteratura Oracle si possono tranquillamente definire piccoli, le dimensioni di un database vanno dai 10 ai 100 GB. Allocare più di due/tre GByte di spazio per la tablespace di Undo è quasi sempre un dramma. Tant’è che la nostra applicazione è prevalentemente OLTP, cioè con molte transazioni brevi, quindi raramente sono necessari più di un paio di GByte di Undo. Poi si sa da un’applicazione si vogliono tante cose, la reportistica è un elemento fondamentale affinchè chi prende decisioni abbia dati per prendere decisioni. Poi vi sono i grossi batch di interfacciamento verso l’esterno e così un paio di GByte possono non bastare.

Succede però che lo sviluppatore scrive batch partendo evidentemente dal presupposto che le macchine abbiano risorse infinite (almeno per quanto riguarda il database) e così girano al DBA laconiche segnalazioni di errore ORA-01555 che il DBA deve risolvere, senza immaginare che si tratta una cosa che deve essere analizzata in modo congiunto, perchè alle volte può capitare che una piccola modifica all’applicazione risolva il problema

Lascia un commento »

RSS feed for comments on this post. TrackBack URI

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Blog su WordPress.com.
Entries e commenti feeds.

%d blogger cliccano Mi Piace per questo: