使用 db2cklog 工具檢查保存日誌檔
檢查保存日誌檔可確保已知的良好日誌檔在需要 RollForward 回復時可用,且回復作業不會因日誌檔問題而失敗。 本主題中的資訊告訴您如何使用 db2cklog 工具來檢查日誌檔,以及日誌檔驗證失敗時要採取的動作。
開始之前
關於此作業
在下列情況下,檢查保存日誌檔非常有用:
- 在啟動 RollForward 作業之前立即: 如果需要執行 RollForward 回復作業,您可以先針對執行 RollForward 作業所需的所有保存日誌檔執行 db2cklog 工具,以確保日誌檔有效。 事先針對日誌檔執行 db2cklog 工具,有助於避免回復作業因日誌檔問題而失敗,而需要後續的回復作業。
- 每次關閉日誌檔並複製到日誌保存目錄時: 作為日常作業的一部分,可以檢查保存日誌檔作為額外的預防措施,以確保已知的良好日誌檔一律可用。 使用此預防措施,您立即知道是否需要尋找日誌檔副本,或是否需要完整資料庫備份來建立新的回復點。 這有助於在需要 RollForward 回復時減少任何延遲。
程序
若要檢查保存日誌檔,請從指令行發出 db2cklog 指令,並包括您要檢查的一或多個日誌檔。 請注意,您不會在 db2cklog 指令中指定完整日誌檔名稱,而只會指定日誌檔名稱中的數值 ID。 例如, S0000001.LOG 日誌檔的數值 ID 是 1; 若要檢查該日誌檔,請指定 db2cklog 1。 如果保存日誌檔不在現行目錄中,請使用選用 ARCHLOGPATH 參數併入日誌檔的相對或絕對路徑。
- 如果您要檢查單一保存日誌檔的有效性,請使用指令將該日誌檔的數值 ID 指定為 log-file-number1 。 例如,若要檢查 /home/amytang/tests 目錄中 S0000000.LOG 日誌檔的有效性,請發出指令
db2cklog 0 ARCHLOGPATH /home/amytang/tests。 - 如果您要檢查保存日誌檔範圍的有效性,請在指令中包含該範圍的第一個和最後一個數值 ID (從 log-file-number1 到 log-file-number2)。 系統會檢查該範圍內的所有日誌檔,除非以 log-file-number2 指定之範圍的上限在數值上低於範圍的開頭 (以 log-file-number1指定)。 在該情況下,只會檢查 log-file-number1 。 例如,若要檢查 /home/nrichers/tests 目錄中從 S0000000.LOG 到 S0000005.LOG 的日誌檔有效性,請發出指令
db2cklog 0 TO 5 ARCHLOGPATH /home/nrichers/tests
結果
範例
下列範例顯示 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 回復。