1. Glossario/

SCN

System Change Number

L’SCN (System Change Number) è il contatore interno con cui Oracle ordina ogni modifica avvenuta nel database. Cresce in modo strettamente monotono: ogni COMMIT ottiene un SCN più alto del precedente, rendendo possibile ricostruire con precisione lo stato del database in qualsiasi momento passato.

Come funziona #

Ogni volta che una transazione esegue un COMMIT, Oracle assegna un SCN univoco e lo registra nel redo log, nel control file e negli header dei datafile. Questo valore è il punto di riferimento per tutte le operazioni di consistenza.

-- Lettura dell'SCN corrente del database
SELECT CURRENT_SCN FROM V$DATABASE;

-- SCN registrato nell'header di un datafile
SELECT NAME, CHECKPOINT_CHANGE# FROM V$DATAFILE;

Durante un’istanza recovery, Oracle confronta l’SCN del control file con quello degli header dei datafile per determinare quali blocchi necessitano di redo e quali sono già consistenti.

Contesto operativo #

L’SCN è centrale in tre scenari principali:

  • Point-in-time recovery (PITR): si specifica un SCN target e Oracle riapplica il redo fino a quel punto esatto.
  • Flashback: le funzionalità Flashback Query e Flashback Database usano l’SCN per navigare nella storia dei dati.
  • Data Guard e replication: lo standby applica l’archived redo fino all’SCN trasmesso dal primary, garantendo la sincronizzazione.

L’SCN ha un limite teorico massimo (legato all’architettura a 48 bit nelle versioni recenti), ma in condizioni normali non rappresenta un vincolo operativo. Situazioni anomale di SCN headroom ridotto sono monitorabili tramite V$DATABASE_INCARNATION e le note MOS correlate.