文章編號: 240145 - 上次校閱: 2007年11月26日 - 版次: 6.2

如何移除 Exchange Server 交易記錄檔

本文是下列先前已發佈文件的整合:259751, 315196
重要 本文包含有關修改登錄的相關資訊。修改登錄之前,請務必將它備份起來,並瞭解如何在發生問題時還原登錄。如需有關如何備份、還原和修改登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
256986? (http://support.microsoft.com/kb/256986/ ) Microsoft Windows 登錄說明


本文也包含關於刪除交易記錄檔的資訊。在最嚴重的損毀情況下,如果資料庫損毀,而且您又沒有記錄檔,便可能無法修復所有資料。交易記錄檔能提供高層級的恢復能力;因此,只有在無法完成完整備份時,才執行本文中所討論的程序,以做為緊急情況的補救措施。完成備份認可的記錄檔之後,完整備份會自動將其永久刪除。

在此頁中

全部展開 | 全部摺疊

結論

Exchange Server 資料庫交易記錄檔記錄對 Exchange Server 資料庫所做的所有變更。長久下來,如果沒有定期清除硬碟中的這些交易記錄檔,這些檔案就會累積並佔用所有可用的磁碟空間。

Exchange 交易記錄檔的大小是固定的。如果是 Microsoft Exchange Server 2003 和所有舊版 Exchange Server,這個檔案的實際大小為 5 MB。如果交易記錄檔已滿,就會以數字序號命名該記錄檔,並產生新的記錄檔以供目前使用。

目前使用的交易記錄檔就是 Exchange Server 最新建立的記錄檔,在 Microsoft Exchange Server 5.5 中,目前使用的交易記錄檔一律命名為 Edb.log。在 Microsoft Exchange 2000 Server 和 Exchange Server 2003 中,則以儲存群組的前置詞命名目前使用的記錄檔。如需詳細資訊,請參閱<儲存群組>一節。

Exchange 使用下列其中一種方法,自動移除不需要的記錄檔:
  • 如果已啟用循環記錄,在被寫入資料庫檔案後,Exchange Server 會立即移除交易記錄檔。此程序可能導致某些閒置系統發生延遲,要等到相關儲存群組目前的 Exx.log 檔案或 Exchange Server 5.5 的 Edb.log 檔案已滿且需要重新命名時,延遲的情況才會解決。如果要加速新記錄檔建立與自動刪除程序,您可以寄一封夾帶 5 MB 附件的電子郵件給自己。

    注意 根據預設,在 Exchange Server 5.5 中會啟用循環記錄。根據預設,在 Exchange 2000 Server 或 Exchange Server 2003 中不會啟用循環記錄。
  • 如果停用循環記錄,在執行儲存群組中所有資料庫的完整或累加線上備份之後,Exchange Server 就會移除多餘的記錄檔。
如需有關 Exchange 記錄機制的運作方式和如何對此機制進行變更的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
147524? (http://support.microsoft.com/kb/147524/ ) XADM: How Circular Logging Affects the Use of Transaction Logs
258470? (http://support.microsoft.com/kb/258470/ ) XADM:如何修改循環記錄設定
如果下列其中一種情況成立時,交易記錄檔的數目將增加,直到硬碟空間耗盡:
  • 備份程式不會移除交易記錄檔。
  • 備份程式已停止執行。
  • 未使用其他方法清除交易記錄檔。
如果您已經沒有硬碟空間,便可能必須手動移除交易記錄檔。或者,在執行特定儲存群組中所有資料庫的完整或累加線上備份之前,您預期已快用完所有硬碟空間,可能也必須手動移除交易記錄檔。如果您移除包含資料的記錄,但該資料尚未被寫入資料庫檔案,則在異常停止之後,將無法再裝載該資料庫。因此,在您手動移除任何 Exchange Server 交易記錄檔之前,必須先判斷哪些記錄是可以被移除的。

注意 在本文中,「移除」交易記錄檔指的是根據您的需求,將交易記錄檔移到另一個可以備份、儲存或刪除該交易記錄檔的位置。而「刪除」交易記錄檔,在本文中指的是移除交易記錄檔後,您無法備份或還原該交易記錄檔。

其他相關資訊

手動移除不需要的交易記錄檔

如果要正確移除額外的交易記錄檔,請依照下列步驟執行:
  1. 停止儲存群組中的所有資料庫。
  2. 確認特定儲存群組中每一個資料庫檔案的狀態。如需有關如何確認每一個資料庫檔案狀態的詳細資訊,請參閱<資料庫狀態>一節。
  3. 執行下列其中一個動作:
    • 如果一或多個資料庫為 [不正常關機][不一致] 狀態,請判斷哪些交易記錄檔可以被移除,而不影響資料庫的一致性。如需詳細資訊,請參閱<記錄檔>一節。
    • 如果所有資料庫都是 [正常關機][一致] 狀態,您就可以移除目前交易記錄檔以外的所有交易記錄檔。當您在所有資料庫都是 [正常關機] 狀態時移除目前的記錄檔,會導致重新設定記錄檔的順序。這樣不會妨礙資料庫啟動,但是,如果發生這個情況,重新設定記錄檔的順序會影響資料庫從前一個備份向前復原的能力。
  4. 在您永久移除硬碟中的交易記錄檔之前,請先將您要移除的所有交易記錄檔複製到其他位置。在您順利完成儲存群組中所有資料庫的完整線上備份之前,請勿永久刪除交易記錄檔。
下列各節說明交易記錄檔和 Exchange Server 資料庫之間的關係。下列各節也提供詳細指示,判斷哪些是可以安全移除的記錄檔。

資料庫狀態

如果 Exchange Server 資料庫沒有正確關閉,該資料庫仍舊「附加」在其交易記錄資料流中。這表示交易記錄檔中的資料沒有全部存放至資料庫檔案。下一次啟動資料庫期間,Exchange Server 會偵測到這個情況,然後 Exchange Server 會將遺失的資料套用至資料庫檔案。如果找不到包含此資料的記錄檔,資料庫便無法啟動。

當 Exchange Server 資料庫正確地關閉時,資料庫會「卸離」其交易記錄資料流,在這個情況下,下一次啟動該資料庫時,資料庫就不需要前一個交易記錄檔。但是,如果要還原資料庫的備份或舊版資料庫,這些記錄檔會很有用。這些記錄檔可以將資料庫向前還原為上次備份時間的狀態。因此,在您確定不需要重新執行這些檔案以進入舊版資料庫之前,不應該永久刪除交易記錄檔。

在您手動移除任何交易記錄檔之前,應該先判斷使用該特定交易記錄檔的所有資料庫狀態。在這個情況下,請判斷使用該特定交易記錄檔的每個資料庫之「附加」或「卸離」的狀態。您可以檢查資料庫檔案的頁首以判斷資料庫的附加或卸離狀態,方法是使用 Eseutil 公用程式的 /MH 指令選項。例如,在命令提示字元中執行下列命令,其中 database_name 是您要檢查的資料庫名稱:
eseutil /MH database_name
例如,如果要檢查 Mailbox Store (Server1) 資料庫,請輸入
eseutil /MH “Mailbox Store (Server1).edb
注意 如果要使用 Eseutil 命令來檢查資料庫的標頭,則必須停止該資料庫。

執行此命令之後,請檢查出現的標頭資訊的 [狀態] 值。[狀態] 值提供下列資訊,可以判斷資料庫是否已正確卸離:
  • 如果資料庫已正確卸離,則狀態值為 [正常關機][一致],根據 Exchange Server 版本而定。
  • 如果資料庫沒有正確卸離,則狀態值為 [不正常關機][不一致]。這表示某些現有的交易記錄檔中包含資料庫所需的重要交易。如果您在這個情況下移除交易記錄檔,便無法再次啟動資料庫,除非從備份中還原資料庫,或使用 Eseutil 命令和 Isinteg 命令修復資料庫。

    如需有關如何修復 Exchange Server 資料庫的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
    812357? (http://support.microsoft.com/kb/812357/ ) XADM:使用 Eseutil /p 工具修復 Exchange 資料庫後的維護工作
您也可以使用兩個保留交易記錄檔,預留位置並保留硬碟空間,以免儲存交易記錄檔的硬碟空間已滿。這些保留交易記錄檔的名稱為 Res1.logRes2.log。如果交易記錄檔所在的硬碟已滿,Exchange Server 將使用這兩個保留交易記錄檔,繼續記錄資料庫直到完全停止為止。當記錄磁碟已滿,Exchange Server 無法建立額外的交易記錄檔時,便會將 Res2.log 重新命名,做為下一個記錄。如果必要的話,也會使用 Res1.log

有時候,這兩個保留交易記錄檔的容量可能會不足,這樣會導致儲存群組中的所有資料庫都停止在 [不正常關機][不一致] 狀態。

警告 如果您用完交易記錄磁碟上的磁碟空間,資料庫可能無法完全關閉。如果有一或多個資料庫是 [不正常關機][不一致] 狀態,而且您刪除所有交易記錄檔以釋放磁碟空間,則受到影響的儲存群組中的所有資料庫都必須修復或還原,才能再次裝載。如果一或多個資料庫仍需使用記錄檔,您就不能刪除這些記錄檔。

儲存群組

Exchange Server 資料庫會組織為儲存群組。儲存群組是共用一個交易記錄檔資料流的一組資料庫。在 Exchange Server 5.5 中有一個「資訊儲存」儲存群組,該群組最多可包含兩個資料庫檔案。這兩個資料庫檔案的名稱分別為 Priv.edbPub.edb。此外,Exchange Server 5.5 包含一個「目錄服務」儲存群組,該群組包含一個名為 Dir.edb 的資料庫檔案。

在 Exchange 2000 Server 和 Exchange Server 2003 中,沒有「目錄服務」儲存群組。在 Exchange 2000 Server 和 Exchange Server 2003 中,每台伺服器最多有四個「資訊儲存」儲存群組,這四個「資訊儲存」儲存群組每一個都可以包含最多五個資料庫,這些資料庫的名稱由管理者進行設定。

如果交易記錄磁碟空間已滿,則儲存群組中的所有資料庫會立即停止。當您啟動儲存群組中的任何資料庫時,會檢查儲存群組中的所有資料庫狀態。在啟動第一個資料庫之前,所有資料庫所需的交易記錄檔重新顯示都會一起執行。交易記錄檔重新顯示的操作和事件,通常會套用至儲存群組中的所有資料庫,而非單一的資料庫。

重要 您必須確認每一個資料庫檔案都是處於 [正確關機][一致] 的狀態。即使某個儲存群組中的一個資料庫沒有正確卸離,該儲存群組中的一或多個資料庫也可能可以正確卸離。請勿根據您檢查的第一個資料庫狀態,假設儲存群組中的所有資料庫都是處於 [正確關機] 的狀態。

注意 在 Exchange Server 5.5 中,您必須使用 Eseutil 命令,檢查 .edb 檔中包含的每一個資料庫。在 Exchange 2000 Server 和 Exchange Server 2003 中,每一個資料庫都會被分割為兩個檔案,分別是 .stm 檔和 .edb 檔。使用 Eseutil 命令來檢查 .stm 檔案與 .edb 檔案的狀態。

記錄檔

如果要判斷特定儲存群組中的資料庫需要哪些交易記錄檔,請依照下列步驟執行。

針對 Exchange Server 5.5

警告 如果您使用「登錄編輯程式」或其他方法不當地修改登錄,可能會發生嚴重問題。這些問題可能會需要您重新安裝作業系統才能解決。Microsoft 不保證可以解決這些問題。請自行承擔修改登錄的一切風險。
  1. 在 Exchange Server Administrator 程式中,檢視資料庫的工作路徑。

    您可以在 Server 物件的 [資料庫路徑] 屬性頁面上找到路徑位置。檢查點檔案 (Edb.chk) 就位於這個路徑。如果無法取得 Administrator 程式,您可以在系統登錄中檢視工作路徑。執行「登錄編輯程式」,並展開下列登錄子機碼。

    針對資料儲存:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSExchangeIS\ParametersSystem\Working Directory
    針對目錄:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSExchangeDS\Parameters\DSA Working Directory
  2. 從命令提示字元,移至工作路徑資料夾。使用 Eseutil 命令,檢視 Edb.chk 檔的標頭:
    eseutil /mk edb.chk
    請注意,螢幕輸出與下列相似:
    Microsoft(R) Windows NT(TM) Server Database Utilities
    Version 5.5
    Copyright (C) Microsoft Corporation 1991-1998. All Rights Reserved.
    
    Initiating FILE DUMP mode...
    Checkpoint file:edb.chk
    
    LastFullBackupCheckpoint (0,0,0)
    Checkpoint (157,2860,500)    comment:Checkpoint is in log 157 decimal
    FullBackup (90,8,10)
    FullBackup time:1/15/1999 18:18:36
    IncBackup (0,0,0)
    IncBackup time:0/0/1900 0:0:0
    . . .
    						
    [檢查點] 這一行上的三個號碼代表記錄檔的產生號碼、記錄檔位置的磁區位移,以及磁碟位置的位元位移。請寫下產生號碼。
  3. 請將產生號碼轉換為十六進位。在此範例中,十進位數字 157 會轉譯成十六進位數字 9D。Exchange Server 記錄檔是由五個十六進位數字加以編號。例如,記錄檔可命名為 Edb12345.log。在開頭用零 (0) 將記錄號碼湊足五個數字。因此,先前範例中的檢查點記錄檔為 Edb0009d.log

    注意 您可以使用 Windows Calculator 的 [工程型] 模式,將十進位轉換為十六進位。啟動 Calculator。然後按一下 [檢視] 功能表上的 [工程型]。輸入十進位數字,然後按一下 [Hex]
  4. 當資料庫是處於 [不一致] 的狀態時,需要檢查點記錄後產生的檢查點記錄和所有記錄,才能啟動資料庫。您可能找不到與您所計算的檢查點值相對應的記錄檔。如果檢查點位在最新的記錄檔 (一律命名為 Edb.log) 中,就可能發生這種情況。在此記錄已滿並產生新記錄之後,目前的記錄檔名稱才會包含記錄序號。

    您可以檢查記錄檔標頭以確認 Edb.log 檔的實際內部序號,方法是使用 Eseutil 命令:
    eseutil /ML Edb.log
    記錄檔標頭的 lGeneration 欄位反映出該記錄檔的實際序號。您必須將 lGeneration 值轉換為十六進位。
  5. 您可以放心移除所有編號小於檢查點記錄的記錄。但是,請勿移除檢查點記錄。在此範例中,您可以移除 Edb0009c.logEdb0009b.log 等記錄檔,但是不能移除 Edb0009d.log 或目前的記錄檔。
    請記得移動記錄檔,而非將它刪除。您不必為了移除比檢查點舊的記錄檔而停止資料庫服務。
如果您必須還原一個備份且將資料庫完全地向前還原,您必須同時還原該備份之後所建立的所有記錄檔。如果記錄的順序中斷的話,則無法跳過中斷處向前還原。

針對 Exchange 2000 Server 和 Exchange Server 2003

  1. 如果要判斷資料庫 .edb.stm 檔的路徑和檔名,請使用 Exchange System Manager 檢視每一個資料庫物件內容對話方塊中的 [資料庫] 索引標籤。
  2. 從命令提示字元,移至資料庫檔案的路徑。
  3. 執行下列 Eseutil 命令,檢視資料庫檔案的標頭:
    eseutil /mh database_file
  4. 檢查資料庫檔案標頭的 [需要的記錄] 欄位。[Log Required] 欄位會列出啟動此資料庫所需的編號記錄檔範圍。如果範圍是 0 - 0,則不需要記錄檔便可啟動此資料庫。這代表該資料庫是處於 [正確關機][一致] 的狀態。

    注意 如果要使用 Eseutil 命令檢查資料庫的標頭,必須停止該資料庫。但是,在所有 Exchange Server 版本中,您可以在執行資料庫時檢查檢查點檔案的標頭。在所有 Exchange Server 版本中,檢查檢查點檔案的程序都一樣,已在<針對 Exchange Server 5.5>一節中說明。檢視檢查點的值能夠讓您判斷可以移除哪些記錄檔,而不必停止資料庫。可以移除的記錄檔,是比檢查點記錄舊的記錄檔,以及沒有包含檢查點記錄的記錄檔。
  5. 如果您執行的 Exchange Server 版本比 Exchange Server 2003 Service Pack 1 (SP1) 舊的話,必須將 [需要的記錄] 欄位中列出的十進位範圍,轉換為十六進位值。例如,如果 Log Required 值是 28217 – 28221,則資料庫需要從 06E3906E3D 的記錄檔。在 Exchange Server 2003 SP1 中,已將 [需要的記錄] 欄位增強為報告十進位和十六進位值。

    注意 您可以使用 Windows Calculator 的 [工程型] 模式,將十進位轉換為十六進位。啟動 Calculator,然後按一下 [檢視] 功能表上的 [工程型]。輸入十進位數字,然後按一下 [Hex]

    注意 在 Exchange Server 5.5 中,記錄檔是命名為 Edbxxxxx.log,其中「xxxxx」是五位數的十六進位數字。由於您在 Exchange 2000 Server 和 Exchange Server 2003 中最多可以擁有四個儲存群組,每個儲存群組中都有一組特定的記錄檔,所以交易記錄檔的名稱中不會出現「Edb」前置詞。在 Exchange 2000 Server 和 Exchange Server 2003 中,會以「E00」、「E01」、「E02」、「E03」取代「Edb」前置詞。如果是「復原儲存群組」,則會以「R00」取代「Edb」前置詞。在 Exchange System Manager 中,儲存群組記錄檔名稱的前置詞,會出現在該儲存群組物件的內容對話方塊 [一般] 索引標籤上。因此,如果儲存群組前置詞是 E01,且 Log Required 項目是 28217 – 28221 (0x06E39 – 0x06E3D),則需要的實際記錄檔是 E0106E39.logE0106E3D.log

    在移除該儲存群組的任何記錄之前,您必須先檢查每個資料庫的 [需要的記錄] 值。
如果編號記錄檔小於儲存群組中任何資料庫的 [需要的記錄] 欄位中的最低項目,您就可以放心移除這些記錄檔。請記得移動記錄檔,而非將它刪除。

注意[需要的記錄] 欄位可能會報告一個記錄的範圍,但卻找不到對應的編號記錄檔。例如,[需要的記錄] 欄位可能會報告範圍 28221-28221,但卻找不到編號為 28221 的記錄檔。如果檢查點是最新的記錄檔,就可能發生這種情況。最新的記錄檔一律只以儲存群組的前置詞命名,例如,最新的記錄檔可能被命名為 E01.log。在此記錄已滿並產生新記錄之後,目前的記錄檔名稱才會包含記錄序號。

您可以檢查記錄檔標頭,以確認目前記錄檔的實際內部序號,方法是使用下列 Eseutil 命令:
eseutil /ML log_prefix.log
例如,如果記錄檔前置詞是 E01,請使用 eseutil /ML E01.log。記錄檔標頭的 lGeneration 欄位反映該記錄檔的實際序號。

如果您必須從備份還原 Exchange Server 資料庫,而且想要在不遺失資料的情況下還原 Exchange Server 資料庫,那麼您也必須還原執行該備份後所建立的所有交易記錄檔。如果交易記錄檔的順序中斷的話,則無法跳過中斷處向前還原。在這個情況中,您必須移除該中斷之後編號較大的所有記錄,包括目前的記錄檔。

注意 即使儲存群組中的所有資料庫都是處於 [正確關機][一致] 的狀態,您也不應該移除最新的記錄檔。如果您移除最新的記錄檔,就會產生另一組新的記錄檔,並以序號 0x000001 做為開頭。這組新的記錄檔將會阻礙 Exchange Server 資料庫從前一個備份向前復原。

如需有關如何修復 Exchange Server 資料庫的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
893083? (http://support.microsoft.com/kb/893083/ ) Top support issues for the Exchange information store

這篇文章中的資訊適用於:
  • Microsoft Exchange Server 2003 Enterprise Edition
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Exchange Server 5.5 Standard Edition
關鍵字:?
kbhowto KB240145
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
 

文章翻譯