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.

Offrimi un caffè su ko-fi.com
Controlliamo randomicamente il funzionamento dei link nei nostri articoli. Nel frattempo, se dei link risultano corrotti segnalacelo tra i commenti, li correggeremo. Grazie.

Francesco

Fondatore e amministratore di Dummy-X dal 2007, condivido interessi, idee, progetti, e soluzioni informatiche. Non vendo prodotti, mi limito a descrivere tecnologie e a mettere a disposizione gli strumenti adatti per poter realizzare idee. Tutto ciò che scrivo è frutto della mia esperienza lavorativa e della mia voglia di imparare. Da sempre studio l'informatica in tutte le sue angolazioni (software, hardware, reti e sicurezza) e negli ultimi anni mi sono specializzato nello sviluppo di web applications. Sono sempre aperto a nuove sfide e alla ricerca e conoscenza delle nuove tecnologie.
 

Lascia un commento

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