Creo que no hay cosa mas acojonante para un administrador de sistemas, que un cliente te llame y te diga:
“oye jesús ¿que quiere decir Base de datos corrupta?”
…hace unos dÃas me enfrente a esta llamada, creo la adrenalina que solté en el corto recorrido en coche hasta la instalación del cliente, pude equipararse con hacer puenting o nadar con tiburones.
La base de datos esta gestionada por un firebird-2, lo que era antes Interbase de Borland, el servidor corre sobre un Linux/GNU Debian, y la verdad es que en 10 años habia dado ningún problema, pero… ahà estaba ese odioso error:Â
internal gds software consistency check (can’t continue after bugcheck).
Lo primero llegar allÃ, santiguarse, y entrar en la sala de servidores, allà estaba ese monstruo riéndose de la gracia que habÃa hecho. Busque las ultimas copias de seguridad, extraer la ultima copia al disco externo, y reiniciar…
El mismo error, vaya si el viejo truco de reiniciar no funciona, esto ya pintaba mal, asà que la segunda medida de emergencia de la abuelita e2fsck, chequeo de disco, unos cuantos minutos mas tarde… 0 errores, caguen…
Pues solamente quedaba comprobar la integridad de la copia y comenzar el gbak, recuperación de la copia…. ok la copia era correcta, cosa rara, murphy no debe estar por allÃ, bueno no habÃa ido tan mal, solamente se habÃa perdido un dÃa de trabajo
.
El caso aun asÃ, no me convence mucho, el disco bien, el log, no decÃa nada de caÃda del servidor, que coño le habÃa pasado a la base de datos, existe un comando llamado gfix, que se encarga de estas cosas, asà que no quedo mas que usar gfix, dos ejecuciones mágicas
Este comando muestra los errores encontrados dentro de la base de datos, y se prepara para una recuperación.
gfix -v -full base de datos.gdb -user yo mismo -password mi clave
Una vez detectados el siguiente comando prepara la base de datos para que pueda realizarse un backup.
gfix -mend base de datos.gdb -user yo mismo -password mi clave
Bien, la base de datos a quedo en un estado que permite el backup, asi que ahora es casi simple, crear una copia de seguridad.
gbak -b -v -ig -user yo mismo -password mi clave base de datos.gdb base de datos.gdk
Luego solamente quedara el recuperarla…
gbak -c -user yo mismo -password mi clave -p 2048 base datos.gdk base datos.gdb
