Instrumenting: come scrivere delle procedure PL/SQL

giovedì 26 luglio 2007 alle 26:59 | Pubblicato su Diario, PL/SQL | 1 commento

Ieri ho parlato, inspirandomi ad un vecchio post di Thomas Kyte, della mia avversione verso i debugger difendendo e promuovendo la tecnica che in inglese viene definita “instrumenting”, cioè inserire nel codice “applicativo” del codice di servizio che serve a tracciare l’esecuzione del programma. Un esempio di ciò che voglio spiegare è l’uso del package PL/SQL DBMS_APPLICATION_INFO, come descritto egregiamente tempo fa da Andy Campbell, il post originariamente stava su blogspot e l’avevo raggiunto grazie alla segnalazione sempre di Tom (al riguardo è bene dare un’occhiata anche a questa precisazione). Come descritto egregiamente nel post, un saggio utilizzo del package permette di monitorare nel dettaglio l’esecuzione di una procedura PL/SQL e permette (grazie al fatto che tali informazioni vengono scritte in V$SQL) di avere informazioni aggregate successivamente.

Un’altro esempio è un corretto uso della gestione delle eccezioni come predicato sempre da Tom (insieme al altre pratiche, qui c’è un esempio). In alcuni casi in effetti, ho visto fare quella che per Tom è una delle cose peggiori che si possano fare:

“…
EXCEPTION
WHEN OTHERS
THEN NULL;

della serie: come impazzire per trovare cosa non va.

Vi è poi una procedura, di cui ho gia parlato tempo fa: DBMS_UTILITY.format_error_backtrace() che purtroppo è stata introdotta solo con Oracle 10g, ma che è utilissima come ho descritto a suo tempo. Ogni mia procedura utilizza sempre un sistema di log su tabella (mi sembra una buona cosa), su cui scrivere tutti i dettagli utili (compreso l’output di dbms_utility.format_error_backtrace()) a monitorare l’esito dell’esecuzione della procedura, almeno in un secondo momento, a maggior ragione quando (nel mio caso è sempre così) si tratta di procedure schedulate per girare la notte.

Immagino che per molti non abbia detto nulla di eccezionale, sono solo piccole regole e trucchi di buona programmazione, ma ritengo che ribadirli non guasti.

1 commento »

RSS feed for comments on this post. TrackBack URI

  1. […] Posted on Martedì 21 Luglio 2009 by Cristian Cudizio Gia in due precedenti post (questo e questo) ho parlato di come “attrezzare” opportunamente le procedure PL/SQL per facilitare la […]


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: