Recovery

(eller: reetablering).

Efter en indtruffen fejl bringes en database tilbage i en korrekt eller konsistent tilstand ved hjælp af særlige recovery-faciliteter, som er indeholdt i de fleste databasesystemer. Recovery vedrører genetablering af en database i en konsistent tilstand, og realiseres normalt ved at lade databasesystemet udføre alle databasetransaktioner, der er logget efter et veldefineret genstartspunkt (f.eks. seneste backup af databasen). Behovet for recovery opstår ved fejl, herunder systemfejl, som påvirker systemets buffere og kørende transaktioner, og medie-fejl (f.eks. diskfejl), hvor selve databasen går tabt. Ved at indlæse nyeste sikkerhedskopi og opdatere denne med indholdet i en tilhørende transaktionslog reetableres databasen op til og med sidst korrekt afsluttede transaktion. Brugernes gevinst er, at arbejdet siden sidste sikkerhedskopi ikke mistes, men kun registreringer, der var i gang på nedbruds-tidspunktet. Der findes en række forskellige teknikker til recovery, hvoraf de mest almindelige er:

  • Rollback af transaktioner direkte i en driftssituation ved hjælp af såkaldt commit/rollback-teknik.
  • Rollback i et distribueret databasemiljø ved hjælp af two-phase commit.
  • Indlæsning af seneste sikkerhedskopi (fuld backup) og ajourføring af denne med de supplerende backups, der er taget siden.
  • "Fremrulning" af seneste sikkerhedskopi med den transaktionslog, databasesystemet har produceret, siden sikkerhedskopien blev taget, dvs. udførelse (påny) af operationerne registreret på log-filen.
  • Reorganisering af databasen ved hjælp af særlige unload/load-funktioner (ud- og indlæsning af data, går også under andre betegnelser, f.eks. store/restore).
  • Anvendelse af spejlede diske (disk mirroring) til fysisk dublering af samme database på to diske, som drift kan veksle imellem. Muliggør sikkerhedskopiering uden at forstyrre den daglige drift samt uafhængighed af egentlige diskfejl.

Forfattere: 
Troels Andreasen
Casper Thomsen