Eseutil.exe 示例

 

上一次修改主题: 2005-05-23

本节包含如何能够使用 Eseutil.exe 来匹配数据库和日志文件的示例,如本节前面所述。

Eseutil /mh

使用 Eseutil /mh 来检查数据库头。查找特定的三行:

  • DB 签名
  • 日志签名
  • 所需日志

例如:

DB Signature: Create time:12/30/2002 16:51:49 Rand:606486607 Computer:

Log Signature: Create time:12/30/2002 17:01:27 Rand:607052340 Computer:

Log Required: 44-46

如果已正常断开数据库连接,所需日志值为 0-0,这意味着启动数据库不需要软恢复。在本示例中,数据库被意外停止而且日志 44、45 和 46 都需要进行恢复。

所需日志范围是十进制格式,因此必须将数字转换为十六进制格式以便与实际日志文件名进行关联。在这种情况下,44、45 和 46 等效的十六进制是 2c、2d 和 2e。因此,Exchange 通常将所需日志命名为 Enn00002c.log、Enn00002d.log 和 Enn.log。Enn.log 已满时,Exchange 会自动将其重命名为 Enn00002e.log。可以通过检查 Enn.log 头的 lGeneration 行进行验证,该行将显示:

lGeneration: 46 (0x2E)

从显示的所需日志值得知必须至少有这三个日志文件才能重新启动该数据库。如果使用 Eseutil /mk 并读取检查点文件头时,您将看到检查点在日志 44 (0x2c) 上。所需日志值本身充当数据库文件中的内部检查点,不仅列出恢复所需的第一个日志,还列出了最后一个日志。

如果所需日志行显示 0-0,则重新启动数据库时不需要任何日志文件。虽然如此,只要有上次关闭时数据库附加到的 Enn.log,就可以将日志文件向前播放到数据库中。如果有该日志文件和后续日志文件,则只要日志文件可用就可以向前播放。要进行此操作,必须没有检查点文件,或检查点必须位于所需最低日志之前或之中。

note注意:
当数据库干净关闭时,数据库头中没有指示需要重播哪一个日志文件的内部值,因为不需要任何日志文件。但是,您可能仍想播放其他日志文件。数据库头中的 Last Consistent 值列出数据库上次运行时使用的日志文件。您可以从此日志文件开始并向前重播。在 Exchange 5.5 中,如果您试着从某一个日志文件开始重播,则这种尝试可能会损坏数据库。从 Exchange 2000 Server 开始,其他安全措施可防止重播不适当的日志文件,同时不损坏数据库。

Eseutil /ml

Eseutil.exe 可在不检查各个头的情况下检测序列中不匹配或缺少的日志文件。使用命令 Eseutil /ml Enn 可在当前文件夹中扫描名称以 Enn 开头的所有日志文件,并报告损坏的日志、creation time/prev gen time 不匹配的项和缺少的日志文件。以下示例显示该命令的典型输出,每种错误显示如下:

D:\exchsrvr\MDBDATA\log3\test>eseutil /ml e00

Microsoft(R) Exchange Server Database Utilities

Version 6.5

Copyright (C) Microsoft Corporation 1991-2000. All Rights Reserved.

Initiating FILE DUMP mode...

Verifying log files...

Base name: e00

Log file: D:\exchsrvr\MDBDATA\log3\test\E0000001.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E0000002.log

ERROR: Log damaged (unusable). Last Lgpos: (0x2,1059,0). Error -501.

Log file: D:\exchsrvr\MDBDATA\log3\test\E0000003.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E0000004.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E0000005.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E0000006.log

ERROR: Invalid log sequence. Previous generation time is [12/27/

2002 13:15:24], but expected [12/30/2002 17:03:33].

Log file: D:\exchsrvr\MDBDATA\log3\test\E0000007.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E0000008.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E0000009.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E000000A.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E000000B.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E000000C.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E000000D.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E000000E.log - OK

Missing log file: e000000f.log

Log file: D:\exchsrvr\MDBDATA\log3\test\E0000010.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E0000011.log - OK

Log file: D:\exchsrvr\MDBDATA\log3\test\E00.log - OK

Operation terminated with error -501 (JET_errLogFileCorrupt, Log file is corrupt) after 22.272 seconds.

如果要扫描大量的日志文件,它可能有助于将命令的输出重定向到文本文件以便复查。例如:

ESEUTIL /ML E00 > LOGCHECK.TXT