none
Eseutil in Exchange 2010, Restore environment information corrupted

    Question

  • Hi,

    We have Exchange 2010 mailbox servers in a DAG. I'm preparing a procedure to restore a DB in case of logical corruption.To backup DB we use Tivoli (tdpExchange).

     

    I assume that in case of logical failure I should apply following steps:

    1. Restore DB from a backup into recover DB
    2. Replay logs
    3. Move files and mount restored DB

    I have problem in replaying logs after a DB is restored. Each time I try to use information from restore.env (eseutil.exe /cc /k /fC:\DATA) I got an error "Operation terminated with error -939586621 (Restore environment information corrupted)"

    It means that I can't use eseutil /cc nor another commands which relies on restore.env file. I think that in Exchange 2007 restore.env file was a binary file, now it's a xml file. Perhaps it's the reason. Should I use a special switch, or perhaps there is another way to replay logs in Exchange 2010.

    Any of you have some experience in replaying logs (hard recovery).

     

    Thanks,

    Jaspas

     

    Thursday, November 11, 2010 3:54 PM

Answers

  • As far as I know the ESEUTIL commands are identical to what they were in Exchange 2007. I haven't run across anything different yet. Keep in mind if you work with ESEUTIL on a database while it is offline then you will have to reseed the DB to any other Mailbox servers that had copies of the DB within a DAG.
    Microsoft Premier Field Engineer, Exchange
    MCSA 2000/2003, CCNA
    MCITP: Enterprise Messaging Administrator 2010
    Former Microsoft MVP, Exchange Server
    My posts are provided “AS IS” with no guarantees, no warranties, and they confer no rights.
    • Marked as answer by Gavin-Zhang Friday, November 19, 2010 9:58 AM
    Friday, November 12, 2010 3:28 AM
  • Hi Jaspas,

    I am sorry what exactly mean do you describle.
    What I understand as below:
    About my test:
    1. use windows server backup to backup one test db on the exchange mailbox server, as we known, the bakup file contains some XML file and others
    2. create a RDB on the mailbox server
    3. recover the backup to the directory(you could create one), as we known, it contains the log file, the edb file, the chk file and so on
    4. check the edb file in the recovered file state, local in to the recovery directory, using cmdlet :  eseutil /mh "xxx.edb" 
    5. if the state show dirty, we need rapir it, using the cmdlet eseutil /r "xxx.edb" or eseutil /p "xxx.edb"
    6. check again the state of the edb
    7. copy all the file into the RDB's database file directory,
    8. mount the RDB
    9. do the reocery operation
    Some information for you:
    http://www.msexchange.org/articles_tutorials/exchange-server-2010/management-administration/eseutil-part1.html
    http://www.msexchange.org/articles_tutorials/exchange-server-2010/management-administration/eseutil-part2.html
    http://technet.microsoft.com/en-us/library/dd876874.aspx

    Regards!
    Gavin
     
    • Proposed as answer by Gavin-Zhang Thursday, November 18, 2010 5:23 AM
    • Marked as answer by Gavin-Zhang Friday, November 19, 2010 9:58 AM
    Wednesday, November 17, 2010 7:41 AM

All replies

  • We have Exchange 2010 mailbox servers in a DAG. I'm preparing a procedure to restore a DB in case of logical corruption.

    Logical or Physical?
    Microsoft Premier Field Engineer, Exchange
    MCSA 2000/2003, CCNA
    MCITP: Enterprise Messaging Administrator 2010
    Former Microsoft MVP, Exchange Server
    My posts are provided “AS IS” with no guarantees, no warranties, and they confer no rights.
    Thursday, November 11, 2010 4:40 PM
  • Japas,

    For replay Log files you can run command eseutil /R e00 /i (Soft Recovery).

    Check header of database "eseutil /mh Database.edb" then verify the status. If status showing Clean Shutdown then you can not replay the Log files. If it is showing Dirty shutdown then check LogRequired status.

    Use eseutil /ml E00 to check integrity of Logs. If there is no Log file missing then you can start with Soft recovery for replay Log files.

    - Mitesh

     

    Thursday, November 11, 2010 9:21 PM
  • Hi Brian,

    I'm preparing a procedure for logical corruption. For physical corruption we have a DAG.

     

    Hi Mitesh,

    Thanks for reply. After restoration process the DB is in following state:

    State: Dirty Shutdown
    Log Required: 140-140 (0x8c-0x8c)
    Log Committed: 0-140 (0x0-0x8c)
    Log Recovering: 140 (0x8c)

    In the restoration folder I have DB file and many logs which are already in DB, and moreover logs which are needed to perform restore in time: E00x8c,E00x8d, E00x8e.

    I run

    eseutil /R e00 /i

    ======

    Initiating RECOVERY mode...
        Logfile base name: e00
                Log files: <current directory>
             System files: <current directory>

    Performing soft recovery...
                          Restore Status (% complete)

              0    10   20   30   40   50   60   70   80   90  100
              |----|----|----|----|----|----|----|----|----|----|
              ...................................................
    =======

    I see that operation finished succesfully (100%). However when I verify the db with eseutil /mh, then the database is in the same state (state: dirty shutdown, log required: 0x8c), and modification date of the .edb file is the same as before recovery "5.11"(!), and today it's "11.11". So it seems that something is not working, at the same time I don't know why I have info that it finished succesfully. I have just feeling that something is wrong.

    One more info which I would like to mention: Db was backup on server A, and I restore it on B. Following documentation it doesn't matter, but just in case.

     

    To summary my case/questions:

    1. Eseutils commands which use restore.env doesn't work
    2. Eseutils commands which use soft recovery doesn't work (at least from my point of view), as there is no change on DB header, neither the .edb file.
    3. In the DB header it is written that it requires only the log 0x8c. I wonder if "eseutil /r" is able to replay all logs (8c,8d,8e) or only the one which is specified as "Required". I think that "eseutils /r" is able only to recover DB, and not to replay logs until point in time, but perhaps I missed something. 

    Thanks,

    Thursday, November 11, 2010 10:38 PM
  • I'm preparing a procedure for logical corruption. For physical corruption we have a DAG.

    Ok. The tricky thing with logical corruption is actual knowing when it happened and where to restore to. There are other elements within 2010 that can help you with Logical corruption and many times make the need to perform a restore job unnecessary.

    1. Moving the mailbox (purging corrupt items during the move)

    2. Single Item Recovery (Recovering original items if they were corrupted during editing)

    3. Calendar Repair Assistant (Calendar inconsistencies)

    4. New-MailboxRepairRequest SP1 Only (Can fix search folders, item counts, folder views, parent/child folder issues)

    Then if all else fails a point in time backup of some kind.

     


    Microsoft Premier Field Engineer, Exchange
    MCSA 2000/2003, CCNA
    MCITP: Enterprise Messaging Administrator 2010
    Former Microsoft MVP, Exchange Server
    My posts are provided “AS IS” with no guarantees, no warranties, and they confer no rights.
    Thursday, November 11, 2010 10:58 PM

  • I was not aware about new-mailboxrepairrequest, I will add it to my procedure. However I'm looking for a solution to a problem when only backup in point in time can help.



    I searched a bit, but I found nothing. There are some for Ex2007, plenty for Ex2003, but there is nothing on technet how to use eseutils on Ex2010, and how to replay logs.



    Cheers,

    Pawel
    Friday, November 12, 2010 12:01 AM
  • As far as I know the ESEUTIL commands are identical to what they were in Exchange 2007. I haven't run across anything different yet. Keep in mind if you work with ESEUTIL on a database while it is offline then you will have to reseed the DB to any other Mailbox servers that had copies of the DB within a DAG.
    Microsoft Premier Field Engineer, Exchange
    MCSA 2000/2003, CCNA
    MCITP: Enterprise Messaging Administrator 2010
    Former Microsoft MVP, Exchange Server
    My posts are provided “AS IS” with no guarantees, no warranties, and they confer no rights.
    • Marked as answer by Gavin-Zhang Friday, November 19, 2010 9:58 AM
    Friday, November 12, 2010 3:28 AM
  • Ok, so you mean that when you run eseutil /cc or eseutil /cm (Exchange 2010 SP1) against logs restored from a backup and restore.env (which is xml) then everything is OK. You don't have any error saying that "environement is corrupted"?

    So it means that there is something wrong on my machine or with restore.env file.

    Friday, November 12, 2010 8:20 AM
  • Hi Jaspas,

    I am sorry what exactly mean do you describle.
    What I understand as below:
    About my test:
    1. use windows server backup to backup one test db on the exchange mailbox server, as we known, the bakup file contains some XML file and others
    2. create a RDB on the mailbox server
    3. recover the backup to the directory(you could create one), as we known, it contains the log file, the edb file, the chk file and so on
    4. check the edb file in the recovered file state, local in to the recovery directory, using cmdlet :  eseutil /mh "xxx.edb" 
    5. if the state show dirty, we need rapir it, using the cmdlet eseutil /r "xxx.edb" or eseutil /p "xxx.edb"
    6. check again the state of the edb
    7. copy all the file into the RDB's database file directory,
    8. mount the RDB
    9. do the reocery operation
    Some information for you:
    http://www.msexchange.org/articles_tutorials/exchange-server-2010/management-administration/eseutil-part1.html
    http://www.msexchange.org/articles_tutorials/exchange-server-2010/management-administration/eseutil-part2.html
    http://technet.microsoft.com/en-us/library/dd876874.aspx

    Regards!
    Gavin
     
    • Proposed as answer by Gavin-Zhang Thursday, November 18, 2010 5:23 AM
    • Marked as answer by Gavin-Zhang Friday, November 19, 2010 9:58 AM
    Wednesday, November 17, 2010 7:41 AM
  • Check the Signature on the Database DB signature and RAND number.,.,. and check the log signature and rand number .try to mount the database . ( if you are not missing anything then you need to repair the DB - Eseutil /p and remember to seed it across after running eseutil /d - isinteg as applicable)

    Wednesday, November 17, 2010 11:02 AM