Controllo interno di coerenza del software gds - come recuperare i database Firebird/InterBase
Oleg Matveev, 20-Nov-2014
Quando un’istanza di Firebird (o InterBase) non può eseguire un’operazione senza garanzia che la coerenza del database non venga compromessa, genera un errore (bugcheck) e interrompe l’operazione corrente.
Il testo di tale errore Firebird inizia con il prefisso obbligatorio “internal gds software consistency check (can’t continue after bugcheck)” (per le versioni recenti di Firebird è “internal Firebird software consistency check”), seguito dal testo effettivo dell’errore (come “decompression overran buffer (179)”).
Spesso gli errori “internal software consistency check” significano che il database Firebird è corrotto (tuttavia, non è una regola) - cioè, la coerenza dell’immagine interna del database è compromessa e dovrebbe essere riparata per continuare il normale funzionamento.
Se vedi tale errore nel tuo firebird.log o come messaggio di errore nella tua applicazione, esegui questo comando per assicurarti che il tuo database sia a posto:
gfix.exe -v -full -user SYSDBA -pass masterkey path_to_your_database
Se la validazione gfix restituisce errori, il database è corrotto e richiede il recupero.
Prova prima il recupero con gfix:
gfix.exe -mend -ig -user SYSDBA -pass masterkey path_to_your_database
e poi esegui il backup del database:
gbak.exe -b -g -user SYSDBA -pass masterkey path_to_your_database path_to_backup
e il ripristino:
gbak.exe -c -v -user SYSDBA -pass masterkey path_to_backup path_to_new_database
Se c’è un problema durante gfix/gbak, recupera il database corrotto con lo strumento IBSurgeon FirstAID - la maggior parte degli errori “internal Firebird consistency check” può essere risolta con esso; FirstAID è stato progettato specificamente per gestire corruzioni pesanti del database.
Inoltre, se hai un database Firebird o InterBase corrotto, contatta il nostro supporto: [email protected] e fornisci il testo completo dell’errore (o uno screenshot).