SCN
System Change Number
SCN (System Change Number) este contorul intern prin care Oracle ordonează fiecare modificare produsă în baza de date. Crește strict monoton: fiecare COMMIT primește un SCN mai mare decât cel anterior, permițând reconstruirea cu precizie a stării bazei de date în orice moment din trecut.
Cum funcționează #
Ori de câte ori o tranzacție execută un COMMIT, Oracle alocă un SCN unic și îl înregistrează în redo log, în control file și în headerele datafile-urilor. Această valoare reprezintă punctul de referință pentru toate operațiunile de consistență și recovery.
-- Citirea SCN-ului curent al bazei de date
SELECT CURRENT_SCN FROM V$DATABASE;
-- SCN înregistrat în headerul unui datafile
SELECT NAME, CHECKPOINT_CHANGE# FROM V$DATAFILE;
În timpul unui instance recovery, Oracle compară SCN-ul stocat în control file cu cel din headerele fiecărui datafile pentru a determina ce blocuri necesită redo și care sunt deja consistente.
Context operațional #
SCN este central în trei scenarii principale:
- Point-in-time recovery (PITR): se specifică un SCN țintă, iar Oracle reaaplică redo-ul până la acel punct exact.
- Flashback: Flashback Query și Flashback Database folosesc SCN-ul pentru a naviga prin istoricul datelor.
- Data Guard și replicare: standby-ul aplică archived redo până la SCN-ul transmis de primary, garantând sincronizarea.
SCN are un maxim teoretic (legat de arhitectura pe 48 de biți în versiunile recente), dar în condiții normale nu reprezintă o constrângere operațională. Situațiile anormale de SCN headroom redus pot fi monitorizate prin V$DATABASE_INCARNATION și notele MOS aferente.