Exchange 2010: Finding which mailbox is causing database bloat.


Hey everyone,

I'll keep this post short because time is precious if you're looking at this post 🙂 I was working on a case troubleshooting excessive database growth. We leveraged this blog to start our troubleshooting: http://blogs.technet.com/b/exchange/archive/2013/04/18/troubleshooting-rapid-growth-in-databases-and-transaction-log-files-in-exchange-server-2007-and-2010.aspx. After a while, we came to realize it was database bloat aka database space leak. Leveraging http://blogs.technet.com/b/dblanch/archive/2009/04/24/tracking-down-exchange-2007-database-bloat.aspx, we did an "eseutil /ms /v" to grab a verbose space dump of the database. How do you interpret the space dump to find out which mailbox is bloated? Debug/escalation engineer Bill Long teaches us how.

First, the output will show us how much space the database occupies on disk:

******************************** SPACE DUMP *****************************************
Name                    Type    Owned(MB)     %OfDb  %OfTable    Avail(MB) Avail%Tbl
=====================================================================================
.\OldDatabase.edb      Db    457888.000   100.00%                  4.813         

You can search through for the "big" entries - the ones that take up a significant portion of the database. In our case, we see this entry:

  Body-a9d-13D2471       Pri    84896.000    18.54%   100.00%       48.563     0.06%
    [Long Values]        LV     83655.844    18.27%    98.54%       10.688     0.01%

This is saying that a mailbox is taking up 84896MB (18.54%) of the database. We can find out whose mailbox by searching for the mailbox identifier "a9d-13D2471" in the output from: Get-MailboxStatistics | Export-Csv c:\temp\mailboxStats.csv. In our case, it maps to a mailbox whose TotalDeletedItemSize is 304MB and TotalItemSize is 576MB for a total size of 880MB. Now how do we reclaim the leaked space?

  1. Move the mailbox to a different database with New-MoveRequest.
  2. Find the GUID of the deleted mailbox: Get-MailboxStatistics -Database OldDatabase | where {$_.disconnectReason -eq "SoftDeleted"} | fl DisplayName,Disconnect*,LegacyDN,MailboxGuid
  3. Purge the mailbox in the old database with: Remove-StoreMailbox -Database OldDatabase -Identity mailboxGuid -mailboxState SoftDeleted -confirm:$false

This post only offers immediate relief for one particular scenario. If you need more information or assistance, please open a case with Microsoft Support.

Hope this helps,

Matt

edit: Bill Long wrote a blog post himself discussing database bloat in Exchange 2010. He also has a great script that helps identify the problem user(s).


Comments (0)

Skip to main content