Link to home
Start Free TrialLog in
Avatar of printmedia
printmedia

asked on

A bad page link (error -327) has been detected in a B-Tree (Event ID: 447)

Hello all,

I have an issue with our Exchange server, the application log keeps throwing the following errors:

Source: ESE
Category: Database Corruption
Event ID: 447

Information Store (2692) First Storage Group: A bad page link (error -327) has been detected in a B-Tree (ObjectId: 172, PgnoRoot: 896) of database D:\Program Files\Exchsrvr\MDBData\Public Folder\pub1.edb (9393 => 10230, 4158633983).

Source: ESE
Category: Database Corruption
Event ID: 447

Information Store (2692) First Storage Group: A bad page link (error -327) has been detected in a B-Tree (ObjectId: 14443, PgnoRoot: 2267585) of database D:\Program Files\Exchsrvr\MDBData\Mailbox store\priv1.edb (3182694 => 3182689, 4158633983).

Notice that the error is occuring for both the priv1.edb and pub1.edb.  These errors are found right after the system tries to run an online defrag, but the online defrag fails and these errors come next.

We had an issue with a hard drive failure about 2-3 months ago, but that hard drive was replaced immediately with a new one.  There was also anti-virus software running on the server that does automatic scanning, but I have since disabled the software incase that is what is causing the problem.

This issue is also causing the overall SBS backup that runs every night to fail with the error "Microsoft Information Store\First Storage Group is not a valid drive, or you do not have access."

I feel that if I fix the database corruption issue that it should fix the SBS backup issue since the SBS backup is failing when it tries to backup exchange.  Unfortunately I have no backup available from before this error started occuring, which leads me to believe that I need to do a hard repair on the database.

So I've found the Microsoft KB article that addresses this issue here: http://support.microsoft.com/kb/810190

The process seems pretty straight foward but I'm a little weary of losing tons of data, or losing the database completely if the hard repair doesn't work.  Also the second part of that article that says the Exmerge utility might have to be used if certain issues occur after the hard repair causes some concern for me.  

I'd like to know if the process outlined in KB 810190 is the route I should take, or are there other steps I should try before? Or are there steps to perform before KB 810190 to ensure a lesser chance of running into issues?  

Also I found this software that seems to address this issue as well but in an easier manner, but wanted some input on it: http://www.recover-computerdata.com/exchange-server-recovery.html  Maybe there is some other 3rd party software that can also take care of this that someone could shed some light on?

Any help would be greatly appreciated, thank you!
ASKER CERTIFIED SOLUTION
Avatar of lucid8
lucid8
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of printmedia
printmedia

ASKER

The hard drive that failed on this machine was replaced and all firmware was updated, the drives were reseated and any cables around the RAID controller were checked. I feel pretty confident with the hard drives the way they are now.  But this problem could've possibly happened before all that was done when the hard drive first failed.  That's all been taken care of now though so I'm just focusing on the solution.

All clients are configured with Cached Exchange Mode, so there's an .ost file on each machine. I'll make sure to export everyone's mailbox contents to .pst files so there is a backup on everyone's individual computer.

1. The only thing the event log keeps showing are the two Event ID 447 errors mentioned above for both the priv1.edb and pub1.edb. Along with the fail of the online defrag, but that's because of the corruption.  

2. Will copy the EDB and STM files to an external drive.

5. No option to run Exchange on another machine.

So after taking these necessary precautions I should run through the steps in KB 810190, or it there another process that might be better?
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Alright in regards to KB810190 the first couple of steps are:

3.Run the eseutil /p command against the dismounted database file. To do so:
•Click Start, click Run, type cmd in the Open box, and then click OK.
•Open the Program Files\Exchsrvr\Bin folder.

For example, type cd\program files\exchsrvr\bin, and then press ENTER.
•Type eseutil /p "c:\program files\exchsrvr\mdbdata\priv1.edb" (where c:\program files\exchsrvr\mdbdata is the path of the database file, and where priv1.edb is the name of the database file), and then press ENTER.

My "bin" folder is in "C:\Program Files\Exchsrvr\bin" but my databases are in "D:\Program Files\Exchsrvr\MDBData\Mailbox store" (priv) and "D:\Program Files\Exchsrvr\MDBData\Public Folder" (pub)

I don't understand this part of the instructions that tells you to cd into the "bin" folder but then run the eseutil /p command on the database which is in another folder. (in my case its on another volume)  

Also the eseutil command is something that the command prompt will recognize right?  Or is there something that I need to install from Microsoft for the machine to recognize eseutil.

Also I'm assuming the stores need to be dismounted in order to copy the edb and stm files to an offline source right?
1. Yes you need to dismount the stores for the process as well as to back them up as a flat file to an alternate location
2. once dismounted back them up to an alternate location as discussed before you do anything
3. yes do Start/Run CMD for command prompt
4. if the bin file is pathed properly you should just be able to open the CMD prompt and type in eseutil and it will start but will error out since you didnt give it a command.  if that works then jsut go to the database path and run eseutil /p databasename.edb and you will be off and running.

NOTE If the bin isn't pathed out and therefore when you run eseutil it doesn't run you can also do this
A. go to your database path, i.e. open CMD and change to F:\Mydatabase or whatever the path is
B: Then run C:\Program Files\Exchsrvr\bin\eseutil /p Mydatabase.edb
Alright, I'm going to go ahead with the repair tomorrow as I was able to find a window to bring the server down.

One question though about the KB article.  It says to run eseutil /p then eseutil /d, then Backup the database files, mount the store, dismount the store, then open the command promp and run "isinteg -s servername -fix -test alltests"

Can I skip mounting the store, and dismounting it? Or is there a certain reason to do that?  Also if I backed up the original database files before starting the eseutil process, is it necessary to back them up again before isinteg?
1.  The premise behind mounting and dismounting the store is to ensure that its in a mountable state since it has to be clean/consistent before you can run an isinteg.  I usually do not mount and dismount before I run isinteg so you can safely skip that step.  If for some reason isinteg has an issue starting then you may need to do so but fairly rare IMO

2. The reason to backup the DB between steps is to protect the work that has been done to the DB so that should something go south you can roll back to the previous successful step vs having to completely start over.  I find that you can never have too many backups.....  and true its a pain but whats worse, taking time to do a backup or having to start the entire process over??   Personally I would suggest that you have the following backups

A:  Before you start ensure that you have made a fresh backup of the database
B: Post /p make a backup of the /p repaired database
C: Post /d make a backup of the defragmented database
D: Post isinteg make a backup of the completely repaired database

If you don't have enough space to do so you can trim this down to have less backups but if you have the space i would do them so that you can keep from having to redo any of your work.


3. The other thing you will want to do is to run the isinteg command multiple times, i.e. first time you are more than certain to correct a certain # of ERRORS which is a good thing.  But you want to repeat this command until you get zero errors corrected and then you will have a clean store.
Did everything last night and it went without a hitch.  Took long, but everything is fine now.  I checked the event viewer in the morning and it's running online defrag's on pub1 and priv1 without a problem, and no more of these errors.  

Thanks for answering all my questions!
Excellent news, thanks for the points and if you are ever in search for Exchange based products check us out on the web

Thanks again and have a great day!