Tuesday, 13 May 2014
5/13/2014 09:00:00 pm 0

Page level corruption in Exchange:

Exchange database consists of two main components i.e. Information Store and the JET Database Engine. JET Database Engine tracks and maintain all the transaction processing. All database management tasks are handled by information store. It maintains the Exchange user mailbox data in private information store (Priv.edb) and public folders data in public information store (Pub.edb). 

The EDB files contain all the user mailbox items such as: mails, contacts, attachments, sent items etc. Each Exchange edb file has a corresponding stm file. These two files are kept synchronized with each other. 
Like other files, The EDB files can also get corrupt due to various reasons such as: Power failure, Virus Attack, over sized files and Dirty system shutdown etc.

To know about more corruption reasons, read my previous article: ”what is EDB file?” 

 Types of Exchange database corruption:


What is File level / Page level corruption in Exchange?

Page level damage is generally caused due to driver, utilities, or hardware issues. There might be some issues in Exchange that can lead to page level corruption in database.

How database pages are stored in Exchange database?

At logical level, Each Exchange database file is a set of 4 KB pages that are sequentially numbered. These pages collectively Read and write operations are performed to these pages only one page at a time. The data pages are arranged together in a balanced tree (B+-Tree) structure.
A database contains tables, tables contain B trees and these B trees are further consisting of data pages.

Each page has a corresponding page number and a page checksum value associated with it.

 The first two 4-KB pages store the database header which stores the information related to the database.
You can view the database header using Eseutil utilities /MH switch.

After these two header pages, the next pages are data pages.Each data page has a header and data field. Just like database headers, the page header stores information about that particular page.
After the first two header pages the next pages are counted as logical pages. Thus if we exclude the 1st and 2nd physical pages(header pages), the third physical page is the first logical page, fourth physical page is the 2nd logical page, , 5th  physical page is the 3rd logical page and so on.

Logical page number = physical page number - 2

In this way the logical and physical pages are co-related. Exchange can easily check if there is some logical page is at an incorrect physical location. Checksum test is performed to determine whether a page has been altered since it was written. 

No checksum value is calculated for "uninitialized pages." .Such pages have a zero page number and zero checksum. For uninitialized pages, each byte stores the value: character 0x00.
Such pages are created when the server tries to manage more space to hold more data.
When a first time request is made to an uninitialized page, it does set a flag so that the uninitialized/ emptied page can be reused.

Each page has page data and a page number. Once the page data is written completely then a checksum value is generated for that particular page. The checksum is then added to the page and after that the Operating system writes the data to disk.

What will happen if the page checksum is correct bit it has been written to an incorrect disk location?

In such case, Error will be reported that indicates that the logical page number does not match the physical location.

One such error is “– error 1018”.

As discussed above, each database consists of database tables, the tables consist of page files, and the pages further consist of B trees. The “– error 1018” indicates corruption at individual page level. Further the error can be occurring due to corruption at higher logical levels of the database. Thus the error indicates failure of data retrieval and storage from/to disk. The error isn’t that much severe. But it not handled initially; later on it can cause critical page file damage. The database can turn corrupt and inaccessible.

To know more about Exchange page level corruption “error -1018” and its resolution methods , read my upcoming articles.


Post a Comment