This article was posted a few days ago on You Had Me At EHLO...
As we mentioned before here, Exchange 2003 SP2 brings us increased database size limits for Exchange 2003 Standard servers with SP2 installed. There is more here than meets the eye, however, and I wanted to cover what the changes are exactly and how to configure this new functionality.
I should note here that the changes to new database size limit functionality have to be done through Windows Registry and there is no UI in ESM at this time. Please be careful! Those registry keys are read during database (not service) startup and when each limit check task is run.
Additionally, registry parameters have to be set for each database targeted for size limit modification. The registry entries should be located under each database entry in the local server registry (please note that by default, registry entries mentioned below are NOT present; by creating them, you are overriding the “default” value set in code). Accordingly, the registry keys must manually be re-set if the server has to be rebuilt using the /disasterecovery setup switch.
All registry settings discussed here would be created in the following registry location (example):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<SERVER NAME>\Private-013e2e46-2cd7-4a8e-bfec-0e4652b94b00
The GUID above matches the value of the objectGUID attribute on the database’s Active Directory object.
Configurable Database Size Limit
Prior to Exchange 2003 SP2, there was no method to configure database size limits. Exchange 2003 SP2 introduces a new feature that allows administrators to configure database size limits. For Standard Edition, the default configured database size limit will be 18GB. This is in contrast to the pre-SP2 hard coded limit of 16GB. This size limit can be modified as shown later in this post. Exchange 2003 SP2 increases the Standard Edition’s licensed database size limit from 16GB to 75GB.
The configurable database size limit for each database is available in both Standard and Enterprise editions. This feature enables an Administrator to set a protective database size limit in order to prevent unintentional database size growth. This limit is configurable up to the licensed database size limit (more details on this to follow).
Notable changes for Exchange 2003 SP2 size limits:
- Size check done against the database now uses logical database size. Empty space in the database will not count against the configured database size limit, therefore no offline defrag will be required for recovery after running out of licensed database size.
- Limit checks, done at regular intervals, are now controlled by the store process instead of JET. The default time interval for this is 24 hours and is configurable via the registry (see below for details).
The following registry value controls the Configurable Database Size Limit:
Data Type | Name | Value | Default (in GB) |
REG_DWORD | Database Size Limit in GB | Standard: 1-75 Enterprise: 1-8000 | Standard: 18 Enterprise: 8000 (Unlimited) |
Note: Some of you might ask – “Why 18GB as the default configurable limit, how did you get to 18GB?” We thought of customers that have possibly provisioned their storage with original 16GB limit in mind. Seeing that the default configurable limit is 18GB and the default warning buffer is 10%, that means that by default, 18GB – 10% (roughly 2GB) = there are warnings that start around 16GB. If the new default with Exchange 2003 SP2 install was 30GB for example, it is possible that some customers with disks provisioned for 16GB would run out of the hard drive space without any warnings.
Licensed Database Size Limit
Pre SP2, Exchange 2003 Standard Edition is limited to a single Storage Group with a single private and a single MAPI TLH public database. Each database in turn is limited to 16GB in total physical size. 16GB is considered too low of a limit to serve the current needs of Standard Edition customers. As defined earlier, SP2 increases the licensed database size limit for Exchange 2003 Standard Edition from 16GB to 75GB; the default configured database size limit will be 18GB. This is in contrast to the pre-SP2 hard coded limit of 16GB.
Exchange 2003 Version | Licensed Limit | Default Configured Limit | Notes |
Standard Pre-SP2 | 16GB | Not Applicable | |
Standard SP2 | 75GB | 18GB | |
Enterprise Pre-SP2 | 8000GB (unlimited) | Not Applicable | |
Enterprise SP2 | 8000GB (unlimited) | 8000GB | Jet hardcoded limit is 8192GB = 8TB |
Database Size Buffer Warning
By default, Exchange 2003 SP2 logs events when the database has grown to within 10% of the configured database size limit. This threshold is configurable. The smallest buffer is 1% of the configured size limit.
The following registry value controls the Database Size Buffer Warning:
Data Type | Name | Value | Default |
REG_DWORD | Database Size Buffer in Percentage | 1 - 100 | 10% |
Timing of the Database Size Check
The database size check happens at 5am, every 24 hours by default. This time can be changed via the following registry modifications.
If modified, next task is scheduled at the new Offset hour. Checks at Database Size Check Interval are skipped until new start time.
First database size check will not take the database offline if the size limit has been exceeded. This also ensures at least 24 hour uptime after the limit is exceeded for default settings.
Data Type | Name | Valid Values | Default | Description |
REG_DWORD | Database Size Check Start Time in Hours From Midnight | 1 - 24 | 5 AM | Determines the hour the first Database Size check will take place after a database is mounted. |
How It All Works together
At database mount, the store process will compare the physical database size against the “Configured Database Size Limit”. Only if the physical size is within, or exceeds, the configured “Database Size Warning Buffer” then store will do a logical calculation of the database size. If it is below this warning buffer then there’s no need to calculate the free space because the logical size will never exceed the physical size. In most cases the physical size is less than the warning threshold, so the size check should take under a millisecond to complete. If the free space calculation must be performed, then that may require a few seconds to parse through the database to generate the logical size calculation.
If the “Database Size Warning Buffer” is reached, or exceeded, then an error event will be logged in the Application event log. To get a better understanding of this concept see the following visual representation of limits & warning thresholds:
Behavior when the Configured Database Size Limit or Licensed Database Size Limit are reached
With Exchange 2003 SP2 (or later) the server will do the following when the Configurable (or default configured) Database Size Limit is reached:
- If the first check after a database mount finds the database size above the limit, the database will not be taken offline but an error event (ID 9689) will be logged in the Application event log.
- If it is the second check, an error event will be logged in the Application event log AND the database will be taken offline.
After the administrator re-mounts the database they will have 24 hours (or until the next database size check or 5AM (default) to take corrective actions.
Hope this was useful!
- Ethan McConnell, Michael Palermiti