Thursday, December 29, 2011

Explaining the Database size limit changes in Exchange 2003 Service Pack 2

Introduction

One of the really interesting changes that comes with Exchange 2003 SP2 is the new database size limit increase in the Exchange 2003 Standard Edition. As most of you know the Standard edition of previous Exchange versions has a hard-coded limit of 16GB, finally this has changed with Exchange 2003 SP2; the default limit per database is now 18GB but can be set as high as to 75GB! Yes you heard me right. Finally Microsoft reacts to years of yielding from frustrated Exchange Administrators (if you ask me this was something that should have been changed back when Exchange 5.5 SP4 was released). Come on, when you think about it 16GB is the limit on our MP3 player’s these days, and should definitely not be a limit to fight against on our Exchange Server(s).
So if Exchange 2003 Standard Edition with SP2 applied can be configured as high as to 75GB, why is the default limit 18GB? Well try to think about it! Most organizations running Exchange 2003 Standard Edition have provisioned their server’s current database partition(s) for 16GB databases, so configuring the database with, for example, a 50 GB limit could make a server run out of disk space.

Manipulating the Database Size Limit

Let me be honest and say it’s a bit cumbersome to manipulate the database size limit, as you’ll need to do so via registry keys (nope as some of you might have hoped for this cannot be done via the Exchange System Manager).

You can configure a logical database size (logical size means the physical size of the .EDB and .STM  files minus the logical free space aka white space in each) limit for each Exchange database by creating a DWORD registry key named “Database Size Limit in GB”. This key should be created under the following location for the mailbox database and public folder database respectively:
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Servername>\Private-GUID
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Servername>\Public-GUID
GUID is short for Globally Unique Identifier which is a unique 128 bit number generated by Windows or a Windows application, in this case Exchange.

In Figure 1 below I’ve configured the “Database Size Limit in GB” for the Mailbox Store on an Exchange 2003 SP2 Standard Edition to a decimal value of 50, which means the database has a limit of 50GB.

Figure 1: “Database Size Limit in GB” registry key
If you wanted to set a limit of 40GB for the Public Folder Store, you would simply need to create the same key under the Public-GUID and configure it with a decimal value of 40.
Note:The new database limit increase also applies to SBS 2003 Servers with Exchange 2003 SP2 applied.
After the Mailbox/Public Folder Store has been configured with a new logical database limit, you will have to dismount/mount the given store (or simply restart the Information Store service) in order for the changes to take effect. When doing so Event ID 1216 will be logged in the Application log as shown in Figure 2 and 3 below.

Figure 2: Mailbox Store Limit set to 50GB

Figure 3: Public Folder Store Limit set to 40GB

Database Size Buffer in Percentage

Another improvement in Exchange 2003 SP2 is that when an Exchange server database has grown to within 10% of the configured database size limit a warning event is logged in the Application log. But you can change the threshold at which you want to be notified by creating a registry DWORD key called “Database Size Buffer in Percentage” under the following locations (depending on whether we're talking about mailbox or public folder stores):
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Servername>\Private-GUID
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Servername>\Public-GUID
You have to specify a value of 1–100 (where 1 equals 1% and so on) in the Value data field of the “Database Size Buffer in Percentage”. In Figure 4 below I’ve, for example, configured the database with a database size limit of 75GB and a warning buffer of 15%.

Figure 4: Database Size Buffer Warning threshold
If or when an Exchange server grows to within 15%, an event Warning (Event ID 9688) will be logged in the Application log.
The first time the size of a given database is above the configured limit an Error event (Event ID 9690) will be logged in the Application log, second time an additional Error event will be logged in the Application log and the database will be dismounted. When this happens you can still re-mount the database but it will be dismounted again during the next check (specified time value in the “Database Size Check Start Time in Hours From Midnight” registry key which I'll explain in the next section). So re-mounting the database should only be a temporary solution, and you should immediately take the appropriate actions necessary in order to resolve the issue.

Database Size Check Start Time

There’s also another registry key with which you can specify the time of the day that the Exchange server should check the logical database size limits based on the limits that have been configured. By default the Exchange server will check the size of each Exchange database 5 hours after midnight or more specifically at 05:00. In order to change this time you should create a DWORD registry key called “Database Size Check Start Time in Hours From Midnight” under the following location (depending on whether we're talking about mailbox or public folder stores::
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Servername>\Private-GUID
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<Servername>\Public-GUID
Then you’ll need to specify a value of 1-24 in the Value data field, where 1 is equal to 01:00 or 1 AM and so on.

Exchange 2003 Enterprise Edition

Although the new database limit registry key’s primarily are intended for the Exchange 2003 Standard edition, they can be used with the Enterprise edition as well. As most of you know the limit of a database running on an Exchange 2003 enterprise edition is 8000 GB, but this is a theoretical limit, the actual limit is based on the hardware used for the Exchange server and any storage subsystem.

When installing Exchange 2003 SP2 on an Exchange 2003 Enterprise edition server, you can use these same registry keys as the ones mentioned in this article, the only difference is that you can configure the database limit to a value up to 8000 GB instead of 75 GB.

The Database Size Limit in GB key and DisasterRecovery switch

Should you for some reason need to restore your Exchange Server(s) using the /DisasterRecovery switch (which you can read more about in one of my previous articles), it’s important you bear in mind that you need to re-create the “Database Size Limit in GB” key’s manually after the server has been restored using this switch.

Conclusion

Finally we’re over that annoying 16GB database limit, but this doesn’t mean you simply should rush out and set the database size limit on your Exchange 2003 Standard edition server(s) to 75 GB just like that. There’s actually a reason why the Microsoft Exchange team configured it with a default limit of 18 GB, they did this because they know most organizations running the standard edition have provisioned their servers’ database partition(s) for 16GB databases. So be sure you properly plan any database size limit changes thoroughly, as failing to do so could end up in a very sad situation.

No comments:

Explaining DNS Concepts - DNS Servers-DNS Queries-DNS Records

3 types of DNS queries— recursive, iterative, and non-recursive 3 types of DNS servers— DNS Resolver, DNS Root Server and Authoritative Name...