Ir al contenido


Foto

[RESUELTO] Problema con base de datos firebird 2.1


  • Por favor identifícate para responder
16 respuestas en este tema

#1 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 17 julio 2009 - 06:13

Me ha pasado varias veces, que si se me apaga la computadora por accidente, mientras tengo el programa que llena la base de datos, me da este error. Pero tambien si la apago normal y la vuelvo a encender a veces me da
el mismo error.

Este  no me permite conectarme a la base de datos desde alguna computadora de la red, pero en alguna de estas ocasiones si puedo entrar a la base de datos desde ibexpert estando en la computadora que tiene la base de datos.


El error es este:

Imagen Enviada
http://img166.images...sededato.jpg 







  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 julio 2009 - 06:30

Eso generalmente significa que has creado la BD en una versión anterior al servidor que estás usando, lo que se me ocurre es restaurar la BD con la utilidad GBack de la actual versión.

Saludos.
  • 0

#3 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 17 julio 2009 - 06:43

Gracias enecumene por tu respuesta, pero conecta bien casi siempre, hasta que sucede alguno de los problemas que te indico.  Por otro lado la base de datos la cree con ibexpert.

Que otra cosa podria ser?
  • 0

#4 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 17 julio 2009 - 06:45

parece que la BD esta corrupta, comprimela con gbak y la vuelves a restaurar a ver que sucede.
  • 0

#5 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 17 julio 2009 - 07:21

Gracias eduarcol.

Ya use gbak,gfix y ibpumb  y me sigue dando el mismo error. 

use varios comandos segun un manual que encontre pero me sigue dando el mismo error:
inclusive cuando intento configurar la conexion para ibpumb me da el mismo error.
que crees de pueda ser.

Dejo una parte del manual que encontre, porque es muy interesante.




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.



  • 0

#6 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 18 julio 2009 - 06:21

El error te lo da al momento de utilizar el gbak??
  • 0

#7 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 18 julio 2009 - 07:27

¿Firebird corre como servicio o como aplicación?
  • 0

#8 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 18 julio 2009 - 07:46

Gracias Eduarcol y Felipe.

Cuando uso gbak no me da ningun error. 
Corre como servicio.

Con IBexpert desde el servidor me puedo conectar a la base de datos y funciona bien
el problema es basicamente  para conectarme desde la red.




  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 18 julio 2009 - 07:50

¿Estás seguro que la versión que tienes y la del servidor son las mismas?.

Saludos.
  • 0

#10 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 18 julio 2009 - 08:03

Gracias Enecumene.

Si las versiones son las mismas  Firebird 2.1
  • 0

#11 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 18 julio 2009 - 08:09

Gracias Enecumene.

Si las versiones son las mismas  Firebird 2.1


¿Y cuando la registraste en el IBExpert que versión colocaste?
  • 0

#12 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 18 julio 2009 - 10:09

firebird 2.1
  • 0

#13 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 20 julio 2009 - 11:41

Saludos a todos
desactive totalmente el firewall, el cual ya tenia el puerto abierto correctamente, porque me conectaba bien con la base de datos. Entonces si me pude conectar remotamente.

Pero sigo teniendo problemas con mi base de datos firebird 2.1, lo raro es que estoy corriendo SQL server 2000 en la misma maquina y esa base de datos si funciona.

Me interesa utilizar Firebird, pero me preocupa su estabilidad ante algunas situaciones.  Bueno el problema sigue asi:

1.- volvi a crear la base de datos y la registre como remote ejemplo  10.0.0.2:e\monfireb.fdb  y cuando voy a crear el generador y el trigger para un campo autoincrementable, no me deja. Sin embargo si la registro como local, entonces si me deja crearlo.

2.- registrada como remote o local la nueva base de datos no me deja hacer consultas como:


delphi
  1. select first 10 * from central order by entradadatos desc 


me da error

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, char 13.
10. 

  y antes no lo hacia.

Creo que la mejor opcion sera reinstalar Firebird, Ibexpert y rehacer la base de datos a ver que pasa.


Les seguire contando como me va.








 




  • 0

#14 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 21 julio 2009 - 07:02

Pienso que puede ser lo que dice enecumene, es problema de versiones
  • 0

#15 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 21 julio 2009 - 10:19

Gracias Eduardo.

Lo que pasa es que instale el mismo firebird y el mismo ibexpert porque baje el archivo y los instale en las dos maquinas.

Pero nada estoy procediendo a desinstalar e instalar de nuevo los programas en ambas computadoras a ver que pasa.




  • 0

#16 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 24 julio 2009 - 11:44

Despues de instalar otra vez firebird, ibexpert y demas  volvió a funcionar todo y luego volvio el problema. Investigando el error que me indicaba

Unsupported on-disk structure for file xxx.fdb; found 32779, support 10 

  descubri esto: http://www.firebirdfaq.org/faq80/ 

En la opcion #3, de las razones me indicaba que podia tener instalado interbase, el cual utiliza el mismo puerto
3050 que firebird y la opcion es cambiar el puerto de firebird al 3051, [glow=red,2,300]Cosa que no se como hacer[/glow], pero como no utilizo Interbase, desactive su servidor y me pude conectar correctamente con la base de datos, sin ningun error.

Me gustaria alguien publicara como cambiar el puerto por default de firebird, para tener la informacion completa.











  • 0

#17 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 24 julio 2009 - 11:55

Primero probemos lo siguiente:

1 - En firewall de Windows abres el puerto 3051.
2 - En ZEOS especifica el puerto y pones 3051

La versión 2.1 de firebird puede correrse múltiples instancias ya sea varias versiones o varios puertos, me avisas si no te funciona pues haremos algo un poco más avanzado.

Saludos.
  • 0




IP.Board spam blocked by CleanTalk.