Actualizado el 22 de Junio del 2017 (Publicado el 15 de Enero del 2017)
1.287 visualizaciones desde el 15 de Enero del 2017
183,2 KB
3 paginas
Creado hace 19a (08/04/2006)
Firebird
Recuperación de bases de datos
Este documento es una guÃa de como arreglar una base de datos que haya resultada dañada. Evidentemente noÂ
se tienen garantÃas de éxito, pero la experiencia nos dice que, en un 80% de los casos, los datos se recuperan sinÂ
mayores problemas. En el otro 20%, lo indicado en esta guia se queda corto y se necesita un poco mas de trabajo.Â
En un 5% de los casos, sobre todo en aquellos en que se ha seguido utilizando el programa varios dÃas a pesar deÂ
los avisos de corrupción en el fichero, no se ha podido recuperar el fichero en absoluto.Â
La moraleja es simple: Invierta media hora en configurar correctamente un sistema de copias de seguridad, porÂ
ejemplo éste, y se ahorrara dÃas enteros de la empresa parada sin saber si los datos podrán recuperarse o siÂ
tendrá que usar la copia de seguridad de hace dos o tres semanas... y la posibilidad de perder los datos es masÂ
que real!Â
PASO 1
Como sé que está rota
Se sabe que una base de datos está rota de varias maneras, aunque la UNICA segura es hacer una copia deÂ
seguridad y recuperarla: Si el proceso no da errores, obtenemos una base de datos impecable, y sabemos que laÂ
original no contenÃa problemas.Â
Normalmente lo sabremos porque el programa da errores al entrar a alguna pantalla, con el texto "consistencyÂ
error" o no puede conectarse a la base de datos, o si las copias de seguridad fallan, o, en general, cuando elÂ
programa se comporta extraño.Â
PASO 2
Pasos previos
Cuando sospechamos que la base de datos está corrupta, sea por la razón que sea, lo importante es intentarÂ
solventar el problema CUANTO ANTES, ya que seguir usando el programa con los datos en malas condicionesÂ
agravará la situación y pueden llegar a hacerse totalmente irrecuperables.Â
Los pasos previos serian estos, en este orden (es importante el orden):Â
1. Lo PRIMERO es dejar de usar el programa, que TODOS salgan de la aplicación.Â
2. Todo lo siguiente lo realizaremos desde el servidor, es decir, el ordenador donde fÃsicamente estánÂ
grabados esos datos.Â
3. Localizar el fichero de datos (extensión FDB o GDB, podemos averiguar cual es la carpeta mirando la rutaÂ
que aparece en la ventana de entrada al programa, en la última lÃnea).Â
4. Cambiarle el nombre al fichero de base de datos, de esta forma, estaremos seguros de que nadie lo estáÂ
usando (alguien puede haberse dejado el programa minimizado) y también que nadie entrará en elÂ
programa y usará los datos mientras dure el proceso.Â
5. Hacer una copia del fichero y llamarle ROTA.FDB (en el resto de instrucciones suponemos que el fichero aÂ
reparar se llama asÃ).Â
6. Crearemos en el disco (del servidor siempre) una carpeta de trabajo que llamaremos SOS, es decir, la rutaÂ
seria "/SOS" y movemos ROTA.FDB a esa carpeta.Â
7. Puede que necesitemos usar este programa para realizar el proceso. Debemos descomprimirlo en laÂ
carpeta /SOSÂ
8. Como todos los pasos que vienen a continuación se realizan desde la consola de comandos (sÃmbolo delÂ
sistema), abriremos una ventana de comandos. Una vez abierto, escribiremos cd /SOS y pulsaremos laÂ
tecla intro. En la ventana deberÃa quedar /SOS> en la linea donde ahora podemos escribir otros comandos.Â
Bueno, ya tenemos todo listo para intentar arreglar el fichero de datos.Â
PASO 3
Confirmar que está rota
Lo primero es asegurarnos de que podemos hacer una copia de seguridad y luego recuperarla sin problemas. Si loÂ
podemos hacer, la copia de los datos que obtenemos estará 100% sana, y el fichero original no contenÃa erroresÂ
importantes.Â
Lo normal de cualquier forma es que una base de datos estropeada de errores en este proceso, asàque noÂ
esperemos mucho de esta fase.Â
En la ventana de consola, escribiremos esto para hacer la copia de seguridad:Â
gbak -user SYSDBA -password masterkey -mode read_only -b rota.fdb rota.fbk
A continuación volvemos a convertir el fichero FBK en uno FDB usable desde el programa:Â
GBAK -user SYSDBA -password masterkey -C rota.fbk nueva.fdb
Si los dos comandos se terminan sin errores, la base de datos original no estaba dañada, o el daño era poco. ElÂ
fichero NUEVA.FDB obtenido está 100% libre de problemas, asàque le pondrÃamos el nombre de la base de datosÂ
original y lo copiarÃamos a su carpeta para volver a usar el programa accediendo a este "fichero saneado".Â
Si hemos recibido algún error, continuamos con la tarea...Â
PASO 4
Intentar arreglar el fichero
No hemos conseguido hacer y recuperar una copia de seguridad, asàque nos toca arreglar el fichero para que seÂ
pueda hacer esta copia.Â
Esto se hace con este comando:Â
gfix -user SYSDBA -password masterkey -mend -full -ignore ROTA.FDB
Esto NO arregla el fichero como para ser usado en el programa, pero con un poco de suerte, sàque lo arreglaÂ
como para poderse hacer una copia de seguridad, lo cual arreglarÃa nuestros problemas.Â
PASO 5
Recuperar los datos a otro fichero
Básicamente ahora vamos a repetir los puntos indicados en el paso 3, pero esta vez no tendrÃamos que recibir losÂ
errores anteriores. Si aun asàrecibimos errores, no pasa nada, hay parámetros extra que se usan para intentarÂ
"saltarse" los errores.Â
Bueno, lo primero es volver a convertir los datos a formato FBK de copia de seguridad, primero lo intentaremos conÂ
el comando "normal":Â
gbak -user SYSDBA -password masterkey -mode read_only -b rota.fdb rota.fbk
Si da errores del tipo "bad checksum" significa que algunos datos están mal grabados y el fichero está corrupto aÂ
pesar de lo hecho en el paso anterior, pero aun puede intentarse hacer la copia con estos parámetros "reforzados":Â
gbak -user SYSDBA -password masterkey -mode read_only -IGNORE -b rota.fdb rota.fbk
Suponiendo que con la versión "reforzada" hayamos obtenido finalmente un fichero ROTA.FBK, ahora seguirÃamosÂ
con la segunda parte:Â
gbak -user SYSDBA -password masterkey -C rota.fbk nueva.fdb
Si este proceso nos da errores del estilo "index error" o "validation error" eso significa que algún dato está grabadoÂ
pero no deberÃa estarlo, por eso no lo puede recuperar.Â
De nuevo, podemos intentar forzar la conversión a fichero FDB añadiendo algunos parámetros extras:Â
gbak -user SYSDBA -password masterkey -IG -N -I -C rota.fbk nueva.fdb
Si todo ha ido bien, finalmente tendremos un fichero NUEVA.FBK en la carpeta /SOS, puede ocupar un poco mas oÂ
un poco menos que el original, del orden del 5 o el 10%, eso es normal.Â
Al llegar aquÃ, pueden habernos pasado tres cosas:Â
• Los dos procesos se hicieron sin errores. Eso quiere decir que en la carpeta tendremos un NUEVA.FDBÂ
100% libre de problemas. Sólo nos resta copiarlo a la carpeta donde estaba el fichero original y ponerle elÂ
nombre que este solÃa tener. Ya deberÃa poderse usar el programa sin problemas.Â
• En alguno de los dos pasos nos dio error, pero usando el comando "reforzado" conseguimos terminar elÂ
proceso. La base de datos resultantes está "mejor" que la original, pero posiblemente perdimos los ÃndicesÂ
de los datos (la base de datos resultante será lentÃsima de usar) y puede que algún dato deba ser borradoÂ
por haber sido afectado por la rotura. Asàque si usamos los "comandos reforzados", deberemos seguir conÂ
el paso 6.Â
• No hubo manera de terminar el proceso, no hemos obtenido ningún NUEVA.FDB, por lo que debemosÂ
seguir con el siguiente paso cruzando los dedos, ya que si los "comandos reforzados" no lo consiguieron,Â
seguro que el paso siguiente nos dará algún que otro problema inesperado.
PASO 6
Bombear datosÂ
Si hemos llegado aquÃ, tenemos un fichero no recuperable, más o menos dañado, asàque nos queda una soluciónÂ
alternativa: Crear una base de datos vacÃa idéntica a la original, e intentar "bombear" dato a dato todo el contenidoÂ
de la original a esta nueva base de datos.Â
Este proceso normalmente nos dará algunos errores, estos corresponderán con los datos irrecuperables.Â
Detallamos aquàlos pasos necesarios para este proceso:Â
1. Crearemos una base de datos idéntica pero vacÃa con estos dos comandos:
gbak -user SYSDBA -password masterkey -m ROTA.FDB VACIA.FBK
gbak -user SYSDBA -password masterkey -c VACIA.FBK VACIA.FDB
Esto deberÃa tardar poco y crear un fichero VACIA.FBK bastante pequeño, del orden de medio megabyte, yÂ
otro VACIA.FDB de unos megabytes.
2. Ahora falta "bombear" los datos de NUEVA.FDB (o de ROTA.FDB si no conseguimos crear la base deÂ
datos NUEVA.FDB en el paso anterior) a VACIA.FDB, y esto se hace con el programa IBPUMP. Su usoÂ
esta explicado en esta pagina. También puede ser descargado el programa de aquày el tutorial de aquÃÂ
además de este otro que está aquÃ.
En el proceso, si se producen errores, los datos que los producen serán saltados, y dependiendo de la gravedadÂ
del dato puede que otros datos auxiliares tampoco pasen (si falla un registro de cabecera, no pasaran tampoco susÂ
lÃneas, por ejemplo). Esto tiene difÃcil arreglo, pero si son muchos los datos perdidos, se puede ver la manera deÂ
volcarlos "manualmente", pero eso ya es demasiado complejo para explicarlo aquày deberá ponerse en contactoÂ
con ampc.Â
PASO 7
Último recursoÂ
Bueno, realmente no hay nada más que podamos hacer, si ha seguido estos pasos, tiene las mismasÂ
oportunidades de arreglar el fichero que nosotros, pero aun hay gente que sabe mucho más del tema y, cobrandoÂ
bastantes euros, puede intentar arreglar el fichero. Esta gente se puede contactar en http://www.ibphoenix.com
Comentarios de: Firebird Recuperacion de bases de datos corruptos (0)
No hay comentarios