Réparer une base FireBird

Réparer une base FireBird

La galère du jour : réparer une base FireBird (ou comment se battre avec des erreurs « database unavailable » sans trop que l’on sache pourquoi 🙂 )


Alors, après s’être battu plusieurs dizaines de minutes pour trouver la bonne syntaxe (pas forcément très lisible dans la documentation), voici les différentes étapes :

1. Sauvegarder la base (on ne sait jamais)
2. Valider la base (rechercher les corruptions)
3. Nettoyer la base (suppression des enregistrements défectueux)
4. Sauvegarde
5. Restauration

1. Sauvegarde de la base

Toujours faire un backup avant de commencer!
Plusieurs solutions :
– Sauvegarde de la VM (c’est cela tourne sur une VM)
– Sauvegarde de la base avec GBak :

set path=%path%;"c:\Program Files (x86)\Firebird\Firebird_1_5\bin"
gbak -user SYSDBA -password masterkey localhost:C:\Chemin\MABASE.fdb c:\backup\MABASE.fbk

La base est dans C:\chemin\MABASE.FDB et on la sauvegarde dans C:\backup\MABASE.fbk

2. Valider la base

On va rechercher les corruptions dans la base. Ce processus permet à priori de détecter les problèmes et de les marquer pour la suite :

gfix.exe -v -full -user SYSDBA -password masterkey localhost:c:\Chemin\MABASE.fdb

3. Nettoyer la base

Maintenant, on va supprimer toutes les corruptions détectées à l’étape précédente :

gfix.exe -mend -ig -user SYSDBA -password masterkey localhost:c:\Chemin\MABASE.fdb

4. Sauvegarder la base

La base est désormais propre, on va la sauvegarder :

gbak.exe -b -g -v -user SYSDBA -password masterkey localhost:c:\Chemin\MABASE.fdb c:\temp\MABASEpropre.fbk

5. Restaurer la base

Si tout s’est bien passé lors de la sauvegarde, on peut écraser la base de prod avec la base sauvegardée (et donc propre) :

gbak.exe -c -v -user SYSDBA -password masterkey c:\temp\MABASEpropre.fbk localhost:c:\Chemin\MABASE.fdb

En résumé

On reprend le modus operandi :

  1. Ajout des binaires dans le Path : set path=%path%; »c:\Program Files (x86)\Firebird\Firebird_1_5\bin »
  2. Sauvegarde : gbak -user SYSDBA -password masterkey localhost:C:\Chemin\MABASE.fdb c:\backup\MABASE.fbk
  3. Détection : gfix.exe -v -full -user SYSDBA -password masterkey localhost:c:\Chemin\MABASE.fdb
  4. Nettoyage : gfix.exe -mend -ig -user SYSDBA -password masterkey localhost:c:\Chemin\MABASE.fdb
  5. Sauvegarde : gbak.exe -b -g -v -user SYSDBA -password masterkey localhost:c:\Chemin\MABASE.fdb c:\temp\MABASEpropre.fbk
  6. Restauration : gbak.exe -c -v -user SYSDBA -password masterkey c:\temp\MABASEpropre.fbk localhost:c:\Chemin\MABASE.fdb

Et voilà !

Sources :
Firebird Database Housekeeping Utility Documentation
Firebird databases recovery and protection for enterprises and ISVs
GBAK Firebird Backup and Restore (Stefan Heymann’s)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.