martes, 24 de abril de 2012

Desfragmentar una base de datos de Exchange

Cualquiera que tenga la desgracia de tener su propio servidor de correo, sabe de las ventajas e inconvenientes que ello conlleva. En nuestro caso tenemos Exchange 2003 con resultados, digamos, desiguales. Venimos de la versión 5.5 y, al migrar nuestros sistemas, lo entendimos como paso lógico.
Tener tu propio servidor de correo te da cierta libertad a la hora de gestionar las cuentas pero, como desventaja, debes mantener esa base de datos, cosa que te da trabajo y bastantes dolores de cabeza. Uno de esos mantenimientos, que todo el que posea Exchange sabe, es desfragmentar cada cierto tiempo la base de datos, básicamente para ganar espacio.
Supongo que, debido a que quien escribe es un completo desgraciado, siempre que me enfrasco en esa tarea me pregunto qué error voy a obtener en esta ocasión. Da igual que tu servidor esté impecable, nunca sabes por donde te va a salir.
Para empezar un requisito indispensable es tener, al menos, el doble de espacio en disco del que ocupa la base de datos, supongo que para poder volcar el archivo temporal que te crea mientras se va desfragmentado. Hoy dia no deberia haber problema, pero antes sí que era un suplicio, debias trasladar la base de datos a otra partición e ingeniartelas para poder desfragmentar.
Las primeras veces que desfragmenté con el servidor recien instalado no hubo problemas, pero despues ya es una constante. Tu no haces nada, pero es igual, se ve que forma parte del "desgaste".
En el proceso de desfragmentación con la herramienta "eseutil" que iniciamos desde el DOS presenta una barra de progreso durante todo el proceso; dicho proceso será tan largo como grande sea nuestra base de datos, y si tienes una base de datos grandecita como la mia, pues unas siete horas no te las quita nadie. Como en este proceso tienes que desmontar los almacenes y, en consecuencia, dejar sin correo a la gente mientras dure la desfragmentación, nos lleva al problema que hemos comentado anteriormente, tener que trabajar fuera de horario para no interferir en el trabajo diario de la empresa. Pues en eso estaba, nuevamente, otro fin de semana, conectado al servidor de correo realizando este proceso. Bueno, a lo que iba. Cuando supuestamente termina la desfragmentación hay otro proceso que vuelca el archivo temporal creado a la base de datos real para que esta se puede iniciar. Pues bien, esa vez, por sus cojones, mientras volcaba el proceso se interrumpió y me dió un error que no recuerdo, con lo que el proceso de volcado no se habia llevado a cabo. Lo peor de todo es que fuí a iniciar la base de datos y estaba más vacia que mi cuenta corriente.
Nunca me habia encontrado con este error, así que "la mar de contento" me puese a buscar información como un loco a ver como podia restaurar ese archivo temporal en la base de datos real. Básicamente se trataba de copiar dicha base de datos temporal a su ubicación mediante algunos parámetros, nada demasidado complicado, lo consegui hacer, respiré tranquilo y volví a maldecir esta profesión y a los creadores de software. El problema no fué la restauración en sí, sinó encontrar la información relativa al error y cómo solucinarlo; de nuevo, ese tiempo empleado no te lo compensa nadie.
Habia conseguido restaurar la base de datos, pero, una pregunta me asaltaba, ¿se habia conseguido desfragmentar?. La base de datos ocupaba lo mismo, con lo que me imaginé que no, aunque a veces no hay demasiada diferencia. Plantee el problema en los foros de Microsoft y la pregunta de que si se habia conseguido la desfragmentación, pero sólo recibí el silencio como respuesta. Pues vale.
Pero claro, ¿ahora que hacia?, porque si volvia a desfragmentar me volveria a pasar lo mismo. Busqué información acerca del error que habia probocado la interrupción de la desfragmentación pero, (nosé si he dicho que soy un puto desgraciado) no encontraba nada al respecto, al menos, nada clarificador, al algúin pringao que habia apagado el servidor mientras se desfragmentaba y cosas así. Se me ocurrió utilizar la misma herramienta eseutil con su parametro /P que repara una base de datos dañada y, al volver a desfragmentar, funcionó!!!. Aquí teneis informacion sobre "eseutil" y todos sus parámetros:

Al final, un hecho recurrente que se da en la vida del informático, es que muchas sabes, como es el caso, no sabes el porqué se ha producido el error. Buscas información y lo solucionas pero nunca sabrás que ha podido ocurrir, a partir de ahí puedes especular y teorizar lo que quieras.
Si la base de datos de alguna manera está "dañada" ¿porque no tengo constancia de ello?¿porque no hay nigún mensaje al respecto en el visor o donde sea?, ¿debo entonces siempre pasar antes el parámetro /P para evitar errores en la desfragmentación?, es decir, ¿doy por hecho que la base de datos se daña de vez en cuando? y ¿porque se daña? porque lo único que hacemos es enviar y recibir correo, ¿quiere decir ello que debemos dar por hecho de que estos errores ocurren? y si esto es cierto ¿entonces debemos asumir que Exchange es un producto defectuoso incapaz de, no ya de arreglar, sinó al menos de informar de estos errores?.  Y si esto fuera algo esporádico, pues mira, pero no es así como podeis seguir leyendo aqui:



No hay comentarios:

Publicar un comentario