![]() |
Corrupcion en una tabla
Buenas foreros.
¿Os a pasado alguna vez que se corrompa una tabla en firebird 2.5? Tengo una BD con 17 gigabytes y me acaban de informar que una tabla (la mayor) esta corrompida. Estamos tratando de recuperarla con GFIX http://www.firebirdfaq.org/faq324/ pero de momento no se ha solucionado (menos mal que se hace copia todos los dias) ¿Alguna respuesta:confused:? Gracias |
Cita:
Cita:
|
Hola Casimiro.
Que suerte que no te haya pasado nunca, tengo que reconocer que es la primera vez en mucho, mucho tiempo. La pregunta es generica, por ejemplo A: Como evitar la corrupcion B: GFix se usa asi (bla.bla.bla) :) |
Cita:
Supongo que en tu caso ha debido ocurrir algo más, lo habitual es algún defecto en el disco, por ejemplo. Cita:
Recuperación de datos corruptos Imagino que el problema habrá sido causado por fallos físicos en el sistema, yo chequearía el disco en profundidad, por si acaso. Y la memoria RAM también. |
Gracias casimiro, intentaremos ir por ahi.
^\||/ |
¿?
cesarsoftware:
¿Lo que no me queda muy claro es como se daño solo una tabla? Vamos, es la primer vez que oigo de un caso así. ¿Porqué dices que está dañada esa tabla? ¿Que error te sale? etc, etc. Entre más detalles nos des, más es la probabilidad que alguien en el foro te pueda ayudar. Por otro lado, te comento un caso que me sucedió a mi, y que al principio se podría interpretar que se había dañado solo una tabla. Modifiqué un dominio un VARCHAR (lo puse un valor menor al que tenía). Despues de esto, al tratar de hacer un sentencia SELECT sobre esta tabla me mandaba un error de "overflow". Y obvio, solo sucedía en un sola tabla. Lo que hice fue, hacer un respaldo de dicha Base de datos y posteriormente la volví a restaurar (sobre-escriendo la misma Base de datos). Con esto se reparó dicho error. ¿Ves, eso es precisamente a lo que me refería: al principio pareció ser lo que no era? En fin, necesitamos más información sobre tu problema. Saludos, Gerardo Suárez Trejo |
Claro, una tabla es muy complicado que se rompa, sería mucha casualidad que se estropeara un disco justo por el lugar donde hay datos de sólo una tabla.
Es por lo que al principio contesté que nunca había visto un caso así. Y suena más a fallo de software. |
Cita:
¿Qué tipo de corrupción tiene? Qué aparece en Firebird.log? Has comprobado si en Firebird.log se ha producido algún reinicio? Yo tuve algún problema de corrupción con la versión 2.5.0 por unos fallos en el motor, pero se solventó en un parche y actualmente la versión 2.5.2 es bastante estable. |
Cita:
|
Cita:
|
Cita:
|
Cita:
|
Si quieres iniciar un debate sobre ese tema entonces crea un nuevo hilo, gracias ;)
|
Cita:
El cliente me llamo ayer informado que "mi software" informaba de que no podia leer el identificador (el soft continua, quizas no debiera, porque lee el resultado de un ensayo de amortiguadores y luego indica a los distintos robots lo que tiene que hacer en funcion al resultado del ensayo) y que al leer la bbdd con un software de terceros solo decia (segun el cliente) "table corrupted" o algo asi, me lo dijo por telefono, pero que otras tablas si podia leer. Como me dijo que tiraria de copia, la verdad es que no se me ocurrio pedirle que me leyera el firebirl.log. Uso la version 2.5.1 de 64 bits. La funcion para leer el identificador es la siguiente
La funcion para grabar datos (unos 3000 por ensayo (1 ensayo cada 24 segundos)) en la siguiente (se graban 2 tablas y solo ha fallado la tabla LECTURAS.
Quizas no hago bien las cosas, ¿como veis las funciones? ¿Os parecen que pueden corronper? Hasta la fecha a registrado correctamente mas de 100.000 ensayos (unos 17 gigabytes) Saludos. |
Cita:
|
Cita:
¿Que os parecen las funciones? ¿Esta bien escritas o son una chapucilla:rolleyes:? |
Cita:
¿Que os parecen las funciones? ¿Esta bien escritas o son una chapucilla:rolleyes:? PD: firebird graba 3000 registros en 1 segundo mas o menos ¿esta bien no? |
El cliente puede puede tener toda la razón que quiera, pero en cosas así, no.
A mí me llama un cliente y me dice que ha probado un software de terceros y le dice "tabla corrupta" y lo mando a... comprar fanta. Lo que tienes que hacer es verlo con tus ojos y probarlo. Y nada de software de terceros, ¡¡¡qué sabrá ese software sobre tu base de datos!!! En cuanto a tu código, bueno, si funciona no lo toques :D Ya en serio, yo haría las cosas de otra manera, pero por indicar sólo una cosa: el insert sería un 'stored procedure' al que le pasaría parámetros. Y, bueno, no se parecería mucho a tu código, pero ya digo, si funciona no lo toques ;) |
Ante todo gracias por estar ahi casimiro.
Estoy contigo, las cosas hay que verlas con nuestros propios ojos y nuestros dedos. Cierto es que me tiene muy mosca, porque primero me dice que el departamento de calidad ha parado la linea de produccion, linea que me dice pasadas unas horas que sigue funcionando pero sin almacenar datos, producen amortiguadores de camion y se prueba uno a uno y se registra el ensayo, ya sabes que en automocion son muy extrictos con la trazabilidad, no sea que un camion vuelque por un amortiguador defectuoso:eek:, bueno a lo que voy, que si fuera asi de grave (linea que hace cientos de amortiguadores cada dia) me voy a casa del informatico y me traigo en helicoptero si hace falta. Tras otra llamada a la hora que le digo que intente usar el gfix, no me ha vuelto a llamar. ¿Lo habra solucionado y no me ha dicho nada:confused:? ¿a sido solo un susto:(? En cuanto al codigo, supongo que vengo de la escuela de las tablas planas en msdos y unix y mis cursos de sql son .... ¿libros, internet,casimiro:D? En serio, si que me gustaria "comparar" codigos, sobre todo de un experto y paciente moderador, ya ves que uso firebird como si de c-isam o dbase se tratara. Te voy pidiendo una||-||:D |
Cita:
Nunca le diría a un cliente que use gfix (ni ninguna herramienta, salvo alguna opción implementada por mí en el software que le haya instalado). ¿Cómo le mandas hacer eso?, eso es algo que tiene que hacerlo uno mismo, comprobar, revisar, verificar todo: la situación de la cadena de montaje, si está funcionando el programa, mirar el problema, hacer backups seguro, desconectar conexiones a la BD, etc. Un análisis completo de la situación, antes, durante y después. Imagina que el cliente hace cualquer cosa y pierde los datos y ahora te responsabiliza a ti porque el backup no es recuperable (por multitud de motivos), ¿qué haces?, te buscas un problemón enorme. Tú eres el experto, profesional. Y tú debes de encargarte de todo eso. (Damos por hecho que te pagan por hacerlo, claro). Cita:
|
Hombre visto asi ....:rolleyes:tienes mucha razon.
En teoria, se supone (al menos en este caso) que el departamento de informatica de la empresa es el que cuida y mantiene sus sistemas instalados, para eso se les forma, de echo esto se ha producido justo despues de que ellos han cambiado no se que del sistema o del dominio, etc. Ademas de que han cambiado el disco mecanico por uno de estado solido, ellos solitos;). Y lo del gfix, bueno, porque me preguntaron si habia alguna herramienta para reparar la bbdd. Y no, una vez que pagan el proyecto, ya no te pagan por mantenerlo, eniff, no te voy a decir que te olvidas, pero ya solo te requieren para ampliaciones, cambio de estructura de lineas y cosas asi, vamos que no tienen mantenimiento, es como en el resto de las maquinas, una vez instaladas, es su departamento de mantenimiento quien las cuida, a los fabricantes, pues eso, ampliaciones o modificaciones, con lo bueno y malo que eso tiene, asi que si me culpa de algo...le mando a tomar ... fanta, me joderia porque tengo otros proyectos con ellos, pero creo, que me creerian a mi y lo que se haria es una reunion de calidad para evitar que pase en el futuro. Vaaleee, si que habia relacionales, pero poca cosa que yo recuerde y la mayoria de los de entonces, incluso los de gestion, usabamos tablas planas y a veces ni eso, ficheros de texto y a almacenar datos:D. Este tipo de instalaciones no son multipuesto, suelen ser un ordenador que hace una cosa, esta linea tendra unos 5 o 6 equipos entre pcs y plcs, pero solo nos comunicamos via buses tipo can, ethernet o serie, de hay lo de las bases de datos "sencillas". ¿Que tipo de solucion implementais en el soft para corregir posible averia en la bbdd?, Fijate que yo hago controles pero a nivel de hard, tengo mucho que aprender de sql/firebird ¿Estaba fresquita la||-||? ¿Quieres otra:D? |
Cita:
Cita:
Ya digo, es que los únicos problemas que me he encontrado han sido por averías físicas de los discos, que se han solucionado cambiando el disco (obvio) y restaurando el último backup. |
Entonces podemos afirmar que firebird es solido por si mismo, me tranquilizan tus comentarios,^\||/
Ya le hechas horas al foro casimiro, no se que hariamos sin ti y el resto de los moderadores. Gracias por atendernos, te mereces una buena mujer y muchos hijos:D o unas birras o lo que quieras ^\||/ |
Cita:
No es que me sienta orgulloso de los militares, pero sí que dice mucho a favor de interbase/firebird. Ya sabes que firebird nació de la versión 6.0 de interbase, que fue distribuida con una licencia libre. En el primer sistema que hice para firebird, el jefe quería que el sistema fuese totalmente seguro y nos obligó a realizar algunas pruebas, por ejemplo: mientras se introducían facturas de ventas desde varios equipos a un servidor central, él (el jefe) sacaba el cable de electricidad y volvía a conectarlo después. Verificábamos el resultado y lo único que se perdía eran las líneas que todavía no se habían hecho commit. El resto estaba todo bien y la base de datos perfecta. Luego repitió con pruebas similares, arrojaba el ordenador contra el suelo para romperlo, luego extraíamos el disco duro y lo montábamos en otro ordenador. Sin problemas. Quería hacer la prueba de arrojar el ordenador/servidor a una bañera llena de agua, pero le dijimos que se metiera él dentro también y no quiso :D:D:D, era un desconfiado :rolleyes:. Por eso digo que salvo roturas físicas de disco, nunca he conocido ningún problema con una BD firebird. Desde 1998. Cita:
Cita:
Por cierto, la mayoría por aquí somos autodidactas también. |
Muy clarificadora la historia de los tanques, conozco un poco los sistemas militares y desde luego, usan lo mas seguro que existe y si no existe, lo hacen.
Y a tu jefe, no se, igual tendrias que haberlo empujado a la bañera:D. Si tiras un ordenador por una ventana o a una piscina, ¿tiene importancia con que soft se han guardado los datos:confused:? Lo que hemos hecho en alguna ocasion es replicar los servidores geograficamentes dispersos, es decir por ejemplo, el servidor central en la sala de centro de datos y otro, por ejemplo, en el sotano del edificio, de manera que si caia, con cambiar la IP del backup, el sistema se reactivaba en pocos minutos. Los bancos suelen tener replicas pero mas dispersos, uno en una ciudad y otro en otra ciudad para que en caso de desastre natural, inundacion, fuego o terremoto, el sistema siga trabajando. Habia pensado, que no si es buena idea, tener 2 sqlconection en la aplicacion y guardar las bases de datos replicadas, una en local y otra por red, pero se que por red la grabacion de 3000 registros pasa de tardar 1 segundo a varios segundos y no da tiempo entre ensayos. ¡Que bonito es ser autodidacta!:) Tu pide, pide, que a lo peor lo consigues:D |
Cita:
Aquí tienes un sencillo tutorial que creé hace ya unos años. |
Gracias casimiro.
A partir de ahora creo que voy a probar a hacer shadow, ¡deberia ser por defecto, jejeje:D! De hecho voy a hacer una prueba ahora mismo:) Tengo que sacar tiempo el leerme el manual enterito:rolleyes: Espero que mi mujer siga en la siesta:p |
Leido el manual, me queda una duda, e probado a hacer un shadow local y perfecto, entiendo que el motor tiene que estar instalado en los dos equipos, pero si quiero replicarlo en el mismo servidor, distinto disco me da un access violation, ¿no se puede crear una sombra con ruta de servidor?
Correcto importante las comillas simples:rolleyes: Error
|
Los archivos shadow tienen que estar en discos que el servidor de Firebird vea como locales. Shadow no es una replicacion de datos, característica de la cual no dispone Firebird. En el momento que pongas un disco de red como local en un servidor sufrirás una penalización en el acceso a datos, ya que Firebird tiene que escribir en ambos simultáneamente y el más lento te va a condicionar la velocidad del motor en el acceso a datos para escritura. Shadow es algo en desuso y para redundancia existe algo más rápido que se llama, creo recordar, RAID.
Por otro lado, la historia de los tanques esta bien, la he oído en muchas ocasiones, pero he leído y sufrido en muchas más ocasiones bases de datos corruptas en interbase y Firebird tras cortes de luz. |
Cita:
Cita:
Tienes que usar linux porque cualquier unidad de red 'montada', el sistema lo ve como si fuese local. Siempre he instalado servidores linux y antes de que existiera linux montaba xenix y antes unix. Las instalaciones con servidores windows puedo contarlas con los dedos de las manos... en casi los 30 años que llevo profesionalmente en este mundillo de la informática. Cita:
Tengo clientes con cientos de conexiones que usan shadow por seguridad, manteniendo una copia (en tiempo real) de la BD en sus oficinas y al mismo tiempo en servidores en otros centros de la empresa que están en ciudades distintas, y una de ellas está en Málaga y la copia en tu ciudad, Alicante. La velocidad, por supuesto, que depende en gran parte de la red, pero para empresas que mantienen un segundo servidor en sus oficinas es perfecto si tienen una buena red local. Cita:
Cita:
|
Cita:
RAID 0, espejo simple, 1 disco es igual al otro disco RAID 3, espejo con checksum, 1 disco es igual al otro mas otro disco que hace de checksum RAID 5, todos los discos se reparten la informacion Luego estan los intermedios RAID 0+1, etc. Y yo si e visto romperse los RAID, demasiadas veces y por diversos motivos, esto si que esta en desuso. Ah, unix, es unix, verdad casimirio:D, yo tambien e trabajado en unix, xenix, openvms, etc , ahiii, que tiempos..:rolleyes: Pero, casi todos los sistema que estan por ahi montados son windows, si uno puede elegir la instalacion, pues vale, linux, pero "por desgracia" casi todo es windows. Aclarado, Shadow solo replica en local, vale, lo tendremos en cuenta. |
Cita:
El sistema RAID puede estar en local o remoto, no tiene nada que ver el lugar. Y en desuso tampoco, al contrario, un sistema raid es muy seguro (un raid 0, no) Cita:
Windows no permite shadow en remoto. Que es muy distinto a lo que has escrito ;) |
Vaaleee, el equipo raid puede estar como nas, pero me referia a que no es lo que estamos hablando, replicar una base de datos en lugar fisicamente distinto.
¿Y si montas una unidad local via vpn o red? Windows lo veria como local por ejemplo (equivalente a mount de unix) z: = \\server2\copia\datos ¿Que haria firebird si hacemos shadow sobre Z:\shadow.shd? ¿Se daria cuenta? supongo que no al igual que un mount sobre fstab Aclaro: No estoy defendiendo a guindows:) |
No, no te sirve hacer eso con windows.
Con linux ocurre que para él, realmente es "local", aunque físicamente no lo esté. Como ejemplo, yo tengo directorios en mi equipo que no están en local, sino en "la nube", algo similar a dropbox, pero sin necesidad de tener ningún servicio para que funcione. Un directorio (ejemplo) /mnt/almacen que realmente está en https://xxxxxxxx.com/loquesea Para ello sólo he de indicarlo en /etc/fstab y lo uso como un directorio más, donde guardo ficheros, borro, edito, etc. Evidentemente, si voy a copiar ahí un fichero muy grande entonces se nota que tarda un poco, ya que va por internet. |
Cita:
En cuanto al shadow en discos remotos, el cuello de botella esta en el acceso más lento a disco. Si tu sistema funciona con fluidez grabando en un disco en remoto, te funcionaria. Windows puede conectar a discos remotos como sí fueran locales al igual que Linux. Cuando Firebird graba datos, debe grabar simultáneamente en la base de datos principal y en los shadows de forma sincrona. Si la línea que conecta con la base de datos remota es lenta, te penalizara las escrituras y en sistemas que hagan escrituras masivas, se verán penalizados de forma importante. Las lecturas, se realizan sobre la base de datos, por lo que no se ven penalizadas por el shadow. Por cierto, aunque hagas shadow, no vendrá mal que tengas raid en los discos, preferiblemente 1+0 por temas de rendimiento si son discos locales. Suerte! |
Cita:
|
Cita:
Cita:
Explica cómo, por favor, porque hace años no se podía, pregunté a firebird y me contestaron que no era posible por no recuerdo qué características de windows, hace muchos años y no me acuerdo el motivo, tampoco me ha hecho falta porque no instalo servidores windows. Cita:
Y antes del 2000, evidentemente, era interbase. |
Cita:
|
Cita:
CREATE SHADOW shadow_numero shadow_opciones //HOST/CARPETA_COMPARTIDA/ARCHIVO_SHADOW. Aparte de esto, shadow tiene sus inconvenientes: 1. Si trabaja en modo MANUAL, en el momento en que se pierde la conexión con el host remoto, se deniega a los usuarios que puedan trabajar sobre la base de datos principal 2. Si trabaja en modo automático, al perder una conexión con el HOST remoto, los usuarios siguen trabajando sobre la base de datos principal, pero se pierde la sincronización, por lo que podemos llegar a tener una base de datos espejo inservible. Realmente, no se recomienda, tanto para sistemas Windows como Linux, almacenar las bases de datos espejo en servidores y unidades remotas por estos motivos, aunque se permite trabajar con ellos. Este sistema es tan bueno o tan malo en Windows como en Linux, ya que una pérdida de conexión de red es independiente del sistema operativo. Shadow es una característica heredada de Interbase y viene de los tiempos donde, tanto los discos como los sistemas RAID eran caros. Actualmente, un buen sistema RAID con redundancia es mejor y se obtiene un mayor rendimiento, ya que mientras shadow es una replicación a nivel software, RAID lo es a nivel harware. Por otro lado, Shadow hereda todo lo malo y lo bueno de la base de datos principal, por lo que una tabla o un índice corrupto lo estará tanto en la base de datos principal como en el espejo, por supuesto mientras no haya un error físico en el disco. Es un punto de vista y no pretendo tener la verdad absoluta en nada. Os animo a utilizar shadow y compartir vuestras experiencias con los demás. |
Cita:
Cita:
|
| La franja horaria es GMT +2. Ahora son las 20:19:46. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi