PDA

Ver la Versión Completa : Chequear integridad base de datos


Toni
07-01-2013, 10:53:17
Buenos dias a todos!

Me gustaria poder incluir en mis aplicaciones en las que utilizo FB2.5 algun tipo de chequeo al inicio de las mismas para poder detectar posibles anomalias de la base de datos. Ya se que es una base de datos muy robusta y con bajo mantenimieto, pero ocurre aveces por problemas externos (sistema inestable, cortes electricos, etc) la base de datos pierda su integridad. Y me gustaria dentro de lo posible poder detectar posibles fallos de integridad en la misma, para poder lanzar un aviso al administrador de la aplicación. Porque en este tipo de casos si se detecta lo antes posible la solución suele tener un remedio facil, pero si no se percibe el problema y continua en el tiempo puede llegar a complicarse. Me ha pasado en alguna ocasión que al tener algunos problemas de consistencia la bd tampoco se estaban realizando correctamente las copias programadas con el gbak y el problema es que al estar automatizado nadie se enteraba de esto.

Por eso me gustaria poder realizar algun tipo de chequeo desde mi aplicación de la integridad de la base de datos.

Saludos!

Casimiro Notevi
07-01-2013, 11:29:17
Puedes usar gbak -v
De todas formas, no es necesario, además de una pérdida de tiempo cada vez que conectes.
Firebird ya tiene un sistema de autorecuperación en caso de caídas por corte de electricidad y cualquier anomalía similar.
En (2013-1998)=15 años nunca he tenido ese problema con ninguna base de datos de ningún cliente. Jamás.
Así que si tienes algún problema no es por eso, debes buscar en otro sitio, normalmente los problemas en la BD se producen por fallos físicos en los discos.
Para ello puedes tener backups que no fallen y que avisen si no se hacen.
También puedes habilitar el 'shadow', que es una copia exacta en tiempo real de la BD en otro disco, así si falla uno, tienes el otro.
En fin, hay distintos mecanismos de seguridad, pero lo de verificar la BD cada vez que conectas no es lo ideal.

Toni
07-01-2013, 12:02:07
Hola Casimiro, muchas gracias por la respuesta.

Yo tambien hace muchos años que trabajo con Firebird, ya incluso antes trabajaba con Interbase y como decia se que son unos RDBM muy robustos y fiables. Pero yo si que he tenido por desgracia problemas con las base de datos. Los problemas que he tenido no son mas bien causados por otras causas (sistemas inestables, cortes electricos, fallos de disco, etc) pero por desgracia son los escenarios que me encuentro y que me toca trabajar.. Como la mayoria de veces es dificil cambiar estos escenarios lo que quiero es evitar que me causen a mi los minimos problemas, de ahi que quiero detectar cualquier anomialia 'lo antes posible' al igual que evidentemente tener las respectivas copias de seguridad.

Permiteme que te haga estas preguntas:

Existe alguna forma sencilla de utilizar el 'gbak -v' desde mi programa y obtener el resultado?

Enlentece mucho el sistema la utulizacion del shadow?

Como recomiendas hacer los backups que no fallen y me puedan avisar? (yo los hago como una tarea programada con gbak y si fallan no me entero)

Muchas gracias por tu respuesta!

Casimiro Notevi
07-01-2013, 14:19:48
Puedes ejecutar gbak con la forma típica de ejecutar un programa externo desde delphi y después aprovechar el fichero .log del gbak para buscar las cadenas "ERROR:" y "FAILED" para encontrar si ha habido algún problema.

Puedes descargarte un sencillo programita de backup que hice hace años y que implementa todo lo que he comentado, así tienes una guía de cómo se hace.
Está en nuestro FTP, concretamente aquí (http://terawiki.clubdelphi.com/Delphi/Tools/?download=BackupsPlanificadosFirebird.zip).

Toni
09-01-2013, 20:02:34
Gracias Casimiro por los aportes!