Las bases de datos se han desmontado automáticamente...

Hola a todo@s!

Seguro que muchos de vosotros habéis tenido alguna caída de las bases de datos en algún momento. Vamos a revisar un caso específico que nos hemos encontrado en múltiples ocasiones. Los síntomas son:

- Las bases de datos se desmontan automáticamente
- En el log de aplicaciones se observa el evento 1159 de origen MSExchangeIS y con código de error 0xfffffd9a:

Event Type: Error
Event Source: MSExchangeIS
Event Category: General
Event ID: 1159
Description: Database error 0xfffffd9a occurred in function JTAB_BASE::EcUpdate while accessing the database "<DatabaseName>".

El código de error 0xfffffd9a se traduce como JET_errCheckpointDepthTooDeep.

Estos problemas aparecen cuando estamos cerca de alcanzar el límite del "Checkpoint Depth" de un Storage Group. En Exchange el "Extensible Storage Engine" (ESE) es el encargado de escribir todos los cambios realizados sobre las bases de datos en los logs de transacciones. Posteriormente aplica dichos cambios sobre las bases de datos directamente. Para evitar pérdidas de información se ha fijado un número máximo de información que el ESE puede escribir en los logs antes de aplicar sobre la base de datos. Ese máximo es lo que se conoce como Checkpoint Depth.

En Exchange 2003 el máixmo de logs sin aplicar sobre la base de datos es de 1024 aunque tendremos problemas a partir de 1008 logs. En el caso de Exchange 2007 el límite está en 5120 y los errores aparecerán al llegar a los 5000 logs pendientes de aplicar.

¿Y por qué estoy yo teniendo este problema?

Normalmente estos problemas aparecen por algún log bloqueado. Este log puede quedar bloqueado por cualquier aplicación que esté accediendo a los logs como pueden ser tareas de backup, antivirus, etc. o por problemas de rendimiento o de acceso a disco. La mejor forma de prevenir estos problemas es símplemente conocer el resto del software que tenemos instalado junto nuestro servidor Exchange y evitar que acceda a las carpetas que contengan logs. También es importante asegurar que no se solapen tareas como pueden ser procesos de backup junto con movimiento de buzones. Abajo podéis ver información sobre las exclusiones a fijar a nivel de antivirus de ficheros:

823166 Overview of Exchange Server 2003 and antivirus software
https://support.microsoft.com/default.aspx?scid=kb;EN-US;823166

File-Level Antivirus Scanning on Exchange 2007
https://technet.microsoft.com/en-us/library/bb332342(EXCHG.80).aspx

File-Level Antivirus Scanning on Exchange 2010
https://technet.microsoft.com/en-us/library/bb332342.aspx

* Para Exchange 2010 no está publicado aún. El enlace será el que figura y esperamos tener esta información en breve.

El determinar la causa de estos problemas es muy complicado ya que no siempre disponemos de las herramientas en el momento del fallo. Podemos intentar ver qué está produciendo el bloqueo de las siguientes formas:

- Utilizando una herramienta como Process Monitor
- Capturando un volcado de memoria

Como podéis ver el proceso no es sencillo. Además contamos con el problema añadido de que normalmente cuando notificamos el problema ya es demasiado tarde...

Para corregirlo, una vez tengamos el problema necesitaremos reiniciar el Information Store tal y como indican los siguientes artículos:

905801 The information store is dismounted, and an event ID 1159 message is logged in Exchange Server 2003 or in Exchange 2000 Server
https://support.microsoft.com/default.aspx?scid=kb;EN-US;905801

925817 The Exchange store is dismounted, and event ID 1159 is logged in Exchange Server 2007
https://support.microsoft.com/default.aspx?scid=kb;EN-US;925817

Antes de esto es interesante revisar el estado de las bases de datos ejecutando la herramienta ESEUTIL con el modificador /MH y verificar en las cabeceras de las bases de datos que todo está correcto. En caso de que el estado no sea el bueno, dependiendo de la situación podemos optar por:

- Intentar montar la base de datos para que aplique los logs pendientes
- Recuperar de backup
- Reparar la base de datos

Estos pasos como podéis ver son ya en casos extremos en los que podamos tener algún tipo de daño. En este tipo de situaciones debemos estar muy seguros de el estado en el que nos encontramos y los pasos que vamos a seguri para evitar problemas. Si tenéis dudas os recomiendo contactar con el Soporte de Microsoft, estaremos encantados de ayudar.

Saludos,
Pablo