PDF de programación - Firebird Recuperacion de bases de datos corruptos

Imágen de pdf Firebird Recuperacion de bases de datos corruptos

Firebird Recuperacion de bases de datos corruptosgráfica de visualizaciones

Actualizado el 22 de Junio del 2017 (Publicado el 15 de Enero del 2017)
1.081 visualizaciones desde el 15 de Enero del 2017
183,2 KB
3 paginas
Creado hace 18a (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
  • Links de descarga
http://lwp-l.com/pdf1871

Comentarios de: Firebird Recuperacion de bases de datos corruptos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad