Scoprire la data di ultima modifica di una riga in una tabella Oracle

Visualizzare la data di ultima modifica di una riga contenuta in qualsiasi tabella del nostro database

Faccio uso di questo piccolo trucchetto ogni volta che ho bisogno di sapere in che data è stata eseguita un’operazione su una determinata riga, ed io intelligentemente non ho inserito in tabella una colonna contenente, appunto, la data di ultima modifica. Il trucco è semplice e funzionale, ma ha delle limitazioni.

Quella che andremo a sfruttare è una pseudocolonna di Oracle che contiene un valore in formato SCN (System Change Number) che consiste in un numero sequenziale che identifica l’ultima modifica che è stata fatta su quella precisa riga in quella precisa tabella.

Questa pseudocolonna si chiama ORA_ROWSCN e, come già è stato detto, è possibile utilizzarla in tutte le tabelle, in un modo come questo

select SCN_TO_TIMESTAMP(ORA_ROWSCN),
       t.*
  from <tabella> T
 where colonna = 'boh'

La funzione SCN_TO_TIMESTAMP non farà altro che andare a cercare all’interno della tabella di sistema la corrispondenza al numero valorizzato in ORA_ROWSCN, mostrando il timestamp di esecuzione.

La limitazione di questo trucco sta nel fatto che tutte le righe di tutte le tabelle hanno la ORA_ROWSCN valorizzato, ma la corrispondenza è volatile, in quanto quelle più vecchie vengono eliminate dalla tabella di sistema, rendendo impossibile il recupero della data di ultima modifica.

Se l’esecuzione della query di cui sopra genera qualche errore, allora potrete scoprire qual è l’ultimo ROWSCN memorizzato nella tabella di sistema, e a che data si riferisce eseguendo questa query

select min(SCN) min_scn,
       SCN_TO_TIMESTAMP(min(SCN)) min_timestamp
  from sys.smon_scn_time

Il limite temporaneo della memorizzazione dei dati dipende dall’impostazione del vostro database Oracle.

Preciso che questo trucco deve essere considerato come ultima spiaggia, in quanto un consiglio d’oro è quello di inserire volutamente un campo di tipo timestamp contenente la data di ultima modifica, e ovviamente gestirla, in ogni tabella presente nel vostro database.

Controlliamo ciclicamente il funzionamento dei link nei nostri articoli. Se noti dei link che non funzionano segnalacelo tra i commenti. Se hai apprezzato l'articolo considera l'idea di sostenere il blog anche con una piccola donazione. Grazie. Patreon / Ko-fi / Liberapay / Paypal

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *