使用 db2cklog 工具檢查保存日誌檔

檢查保存日誌檔可確保已知的良好日誌檔在需要 RollForward 回復時可用,且回復作業不會因日誌檔問題而失敗。 本主題中的資訊告訴您如何使用 db2cklog 工具來檢查日誌檔,以及日誌檔驗證失敗時要採取的動作。

開始之前

您需要對保存日誌檔具有讀取權, db2cklog 工具才能讀取日誌檔並執行其檢查。 只能順利驗證已關閉的日誌檔,例如保存日誌檔。 如果您在仍在作用中的日誌檔上執行工具,則該工具無法正確檢查該檔案,您會收到警告,讓您知道該檔案仍在作用中。

關於此作業

db2cklog 工具會讀取單一日誌檔或一系列編號日誌檔,並對檔案的內部有效性執行檢查。 通過驗證而沒有任何錯誤訊息或警告的日誌檔是已知的良好檔案,您可以在 RollForward 回復作業期間使用它們。 如果保存日誌檔驗證失敗並顯示錯誤訊息,或如果傳回警告,則在 RollForward 回復期間不得使用該日誌檔。 無法修復驗證失敗的保存日誌檔,您應該遵循此作業中概述的回應來執行下一步。
在下列情況下,檢查保存日誌檔非常有用:
  • 在啟動 RollForward 作業之前立即: 如果需要執行 RollForward 回復作業,您可以先針對執行 RollForward 作業所需的所有保存日誌檔執行 db2cklog 工具,以確保日誌檔有效。 事先針對日誌檔執行 db2cklog 工具,有助於避免回復作業因日誌檔問題而失敗,而需要後續的回復作業。
  • 每次關閉日誌檔並複製到日誌保存目錄時: 作為日常作業的一部分,可以檢查保存日誌檔作為額外的預防措施,以確保已知的良好日誌檔一律可用。 使用此預防措施,您立即知道是否需要尋找日誌檔副本,或是否需要完整資料庫備份來建立新的回復點。 這有助於在需要 RollForward 回復時減少任何延遲。

程序

若要檢查保存日誌檔,請從指令行發出 db2cklog 指令,並包括您要檢查的一或多個日誌檔。 請注意,您不會在 db2cklog 指令中指定完整日誌檔名稱,而只會指定日誌檔名稱中的數值 ID。 例如, S0000001.LOG 日誌檔的數值 ID 是 1; 若要檢查該日誌檔,請指定 db2cklog 1。 如果保存日誌檔不在現行目錄中,請使用選用 ARCHLOGPATH 參數併入日誌檔的相對或絕對路徑。

  1. 如果您要檢查單一保存日誌檔的有效性,請使用指令將該日誌檔的數值 ID 指定為 log-file-number1 。 例如,若要檢查 /home/amytang/tests 目錄中 S0000000.LOG 日誌檔的有效性,請發出指令 db2cklog 0 ARCHLOGPATH /home/amytang/tests
  2. 如果您要檢查保存日誌檔範圍的有效性,請在指令中包含該範圍的第一個和最後一個數值 ID (從 log-file-number1log-file-number2)。 系統會檢查該範圍內的所有日誌檔,除非以 log-file-number2 指定之範圍的上限在數值上低於範圍的開頭 (以 log-file-number1指定)。 在該情況下,只會檢查 log-file-number1 。 例如,若要檢查 /home/nrichers/tests 目錄中從 S0000000.LOGS0000005.LOG 的日誌檔有效性,請發出指令 db2cklog 0 TO 5 ARCHLOGPATH /home/nrichers/tests

結果

db2cklog 工具會針對任何通過驗證的檔案傳回回覆碼零。 如果指定已編號的保存日誌檔範圍, db2cklog 工具會依序讀取每一個檔案,執行其檢查,並針對每一個檔案發出回覆碼。 工具會在遇到第一個錯誤時停止,即使已指定日誌檔範圍,且工具尚未檢查其他檔案也一樣。 發現錯誤時所傳回的 DBT 訊息,可以提供保存日誌檔驗證失敗的原因相關資訊,但您無法修正無效的日誌檔。 如果您收到一則 DBT 警告訊息,指出日誌檔可能仍在作用中,但確定檔案是保存日誌檔,則應該將保存日誌檔視為無效,並遵循此作業中概述的下一步回應。

範例

下列範例顯示 db2cklog 指令剖析日誌檔時的一般輸出,在此情況下為 S0000002.LOG。 此檔案通過驗證,回覆碼為零。
$ db2cklog 2                                                      
     ____________________________________________________________________

                      _____     D B 2 C K L O G     _____

                            Db2 Check Log File tool
                                 I    B    M


          The db2cklog tool is a utility can be used to test the integrity
        of an archive log file and to determine whether or not the log file
                  can be used in the rollforward database command.

      ____________________________________________________________________


________________________________________________________________________________



========================================================
"db2cklog": Processing log file header of "S0000002.LOG"

"db2cklog": Processing log pages of "S0000002.LOG" (total log pages: "316840")
            ==> page "1" ...
            ==> page "25001" ...
            ==> page "50001" ...
            ==> page "75001" ...
            ==> page "100001" ...
            ==> page "125001" ...
            ==> page "150001" ...
            ==> page "175001" ...
            ==> page "200001" ...
            ==> page "225001" ...
            ==> page "250001" ...
            ==> page "275001" ...
            ==> page "300001" ...

"db2cklog": Finished processing log file "S0000002.LOG". Return code: "0".
========================================================                                                    

下一步

如果保存日誌檔驗證失敗,您的回應取決於您是否有日誌檔副本可由 db2cklog 工具通過驗證。 如果您不確定是否有日誌檔副本,請檢查 logarchmeth2 配置參數的設定,以判斷資料庫伺服器是否保存每一個日誌檔的次要副本。 如果您正在驗證正在保存的日誌,而且日誌鏡映也配置在資料伺服器上,則您可能仍然可以在日誌鏡映路徑中找到日誌檔的副本,因為您的資料伺服器不會在保存之後立即回收日誌檔。

  • 如果您有保存日誌檔的副本,請針對該副本使用 db2cklog 指令。 如果日誌檔的副本通過驗證,請將無法讀取的日誌檔取代為日誌檔的有效副本。
  • 如果您只有保存日誌檔的一個副本,且無法驗證該副本,則日誌檔無法修復,且無法用於 RollForward 回復目的。 在此情況下,您必須儘快建立完整資料庫備份,以建立新的、更新的回復點,而不依賴無法使用的日誌檔進行 RollForward 回復。