Compared to its previous editions, the Exchange Server® 2010 database has become stable but still it can become corrupt if not managed properly. If the mailbox data becomes inaccessible due to corruption, there are two options to open it: Either restore from backup or try to repair it.
From the very start, Microsoft provided command line tool named ESEUTIL. It can help in checking database integrity, defragment it, repair it, and do much more using the variety of switch parameters. Let us discuss how to start the repair mailbox database Exchange 2010 process with ESEUTIL.
Introduction to ESEUTIL
This utility is meant to correct issues in database pages and tables in ESE (Exchange Storage Engine). Once the database is repaired, ISInteg should be run against it to fix problems at application level.
The database files, i.e. EDB file, is comprised of a series of pages that are basically 4KB or multiple of 4KB. Every page has a structure where the first two pages are responsible to store the header information and the rest stores the data and information. The header is comprised of the checksums for the page that helps the Server to assure that database integrity is maintained.
ESE Table Level:
A table is composed of group of pages that is being properly organized by Exchange Storage Engine. An EDB file is made up of hundreds of individual tables.
An ESE database is stored in the form of tables but it does not understand the relationship between the tables and the data stored in it.
At the time of repair, it might be necessary for ESEUTIL to remove some columns or rows from the tables or in some cases the entire table. Therefore, once the repair process is complete, the integrity of database must be checked and maintained using ISInteg utility. This is known as application-level repair.
The repair process comprises of three stages:
1. Table and Database level repair using /p switch
2. Database defragmentation and index rebuilding using /d switch
3. Run ISInteg for application level database repair
Dismount Mailbox from Server: Before repairing the mailbox, it should be dismounted from Server. For this, open Exchange Management Console.
Verify State of Database:
In the Console Tree, click on ‘Organization Configuration’ and then move down to ‘Mailbox’
In the result-panel, click on ‘Database Management’ tab and select the Server where the mailbox is currently mounted.
In the work-pane, click on the mailbox that is to be dismounted
Right click on the database and select ‘Dismount Database’.
A message will pop up on screen asking if you want to dismount database, click ‘Yes’.
Before repair process, check out if the database is in clean shutdown state or dirty shutdown state. For this, run /mh switch parameter of ESEUTIL. Here the location of Eseutil is: “c:\program files\Microsoft\Exchange Server\V14\Bin”
For Public Folders:
For Private Folders:
The state of database will help to analyze whether the database is being detached from transaction log, which means all transactions are written to the database.
If State=Dirty shutdown, then perform soft recovery of database that will replay the log files using the checkpoint file. For this, ensure that log files are in consistent state and run the command ‘Eseutil /ml “Path of the log files\log prefix’.
Syntax for Soft Recovery:
Verify the Disk Space before Repair:
The logical drive where the ESEUTIL has to be run against the database should have 20 percent more space than the database files that have to be repaired. If that much space is not available, it is recommended to redirect temporary files to some different drive.
(In case this utility is used to repair Exchange 2003 database, ensure that .stm and .edb file are saved on same location.)
Starting Repair Process:
Before starting up repair mailbox database Exchange 2010 process using ESEUTIL, it is recommended to take file-level backup of database. This is because this utility removes corrupt pages, rows, columns or entire table from the EDB file which may result in data loss. Therefore, to ensure that if critical data gets lost while the repair process is executed, there is a backup available to retrieve it back. Let us start.
Stage 1: Repair Database (/p)
On Windows desktop, click on Start button. In the run text box, type ‘cmd’ to open Command prompt.
Now in the command prompt interface, type the location of ESEUTIL “c:\program files\Microsoft\Exchange Server\V14\Bin” and hit Enter.
Stage2) Defragment Database (/d)
The white space in the database due to deletion can be reclaimed through defragmentation and will reduce overall mailbox size.
Stage3) Application-Level Repair
If there is any logical corruption on database due to deletion of data table or its components, then it can be removed through ISInteg.
The summary received will inform you about the number of tests run against the database, the errors, and fixes done for them, time taken by the program to complete the process etc. Repeat the process until no errors are received.
Database repair and defragmentation runs at the speed of 3-5 GB per hour while Isinteg fix at 1-2 minutes per GB.
If you click on the command prompt screen while the repair is in process, ESEUTIL might pause. The procedure can be resumed using F5 button.
When the three recovery stages are done, check the MDBDATA file and remove the log files that it has and then mount the database on Server.
There are various database errors that could be encountered while repair mailbox database Exchange 2010 database. For example: Error -501, -514, -515, -513 which might interrupt recovery process.
If the repair process reports ‘Successful’, it does not mean that the database is now in usable state. System database lost at the time of repair can leave the database un-mountable.
The repair process is lengthy, complicated and requires entire database to be brought offline until recovery process is complete. But yes, the advantage is it is free.