首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 實戰運維手冊 (三):歸檔日誌清理與 db2diag.log 輪轉管理

     編輯:DB2 教學

前言

本系列第三篇聚焦兩項關鍵的日常維護任務:歸檔日誌 (Archive Log) 的安全清理 與 診斷日誌 (db2diag.log) 的尺寸控管。錯誤操作可能導致資料庫無法恢復或實例掛起,本文提供標準化作業程序 (SOP) 確保萬無一失。

任務一:歸檔日誌安全清理 (PRUNE LOG)

前置條件

  • 資料庫採用歸檔日誌模式 (LOGRETAIN=RECOVERY / LOGARCHMETH1 非 OFF)
  • 已完成近期完整離線/線上備份 (確保清理點之前的恢復基準存在)
  • 應用層連線已中斷 (建議維護窗口執行)

操作步驟

  1. 連接資料庫 (以實例擁有者或具 SYSADM 權限用戶):
    db2 connect to <dbname>
    
  2. 查詢第一個作用中日誌檔:
    db2 get db cfg for <dbname> | grep "First active log file"
    # 輸出範例:First active log file = S0015913.LOG
    
  3. 執行 PRUNE 指令 (刪除該檔案之前的所有歸檔日誌):
    db2 prune logfile prior to S0015913.LOG
    
  4. 驗證清理結果:
    ls -l /archive_log_path/ | head -20
    # 確認最早歸檔檔案即為 S0015913.LOG 或更晚
    

關鍵原則

  • 嚴禁使用 OS 指令 (rm/del) 直接刪除日誌檔 — DB2 目錄仍記錄其存在,導致恢復時找不到檔案而失敗
  • PRUNE 會同步更新 DB2 內部目錄,確保恢復鏈完整
  • 清理點必須早於最近一次完整備份的結束點,否則備份組失效

自動化建議

建立排程腳本,結合備份完成事件觸發:

#!/bin/bash
# post_backup_prune.sh
DBNAME=$1
db2 connect to $DBNAME
FIRST_ACTIVE=$(db2 get db cfg for $DBNAME | awk '/First active log file/ {print $NF}')
db2 prune logfile prior to $FIRST_ACTIVE
db2 connect reset

任務二:db2diag.log 尺寸控管與輪轉

定位日誌檔案

db2 get dbm cfg | grep DIAGPATH
# Diagnostic data directory path (DIAGPATH) = /home/db2inst1/sqllib/db2dump

日誌完整路徑:/home/db2inst1/sqllib/db2dump/db2diag.log

觸發清理條件

  • 檔案系統使用率達 80%~90%
  • 單一 db2diag.log 超過 1 GB (影響開啟/搜尋速度)
  • 定期維護窗口 (建議每週/每月)

標準清理 SOP (需停止實例)

  1. 確認應用與 DB2 實例已完全停止:
    db2list  # 確無連線
    db2stop  # 停止實例
    
  2. 備份原日誌 (移至他檔案系統/備份儲存):
    cp /home/db2inst1/sqllib/db2dump/db2diag.log \
       /backup/logs/db2diag_$(date +%Y%m%d).log
    
  3. 刪除原檔案:
    rm /home/db2inst1/sqllib/db2dump/db2diag.log
    
  4. 重啟實例 (DB2 會自動建立新空白 db2diag.log):
    db2start
    

進階:啟用自動輪轉 (DB2 9.7+)

避免手動清理,配置 diagsize 參數自動限制總大小並輪轉:

db2 update dbm cfg using DIAGSIZE 1024  # 單位 MB,總大小上限 1 GB
  • 超過上限時自動輪轉為 db2diag.log.1, .2... 最多保留 DIAGNUM 個 (預設 10)
  • 無需停止實例,零停機運維

常見誤區提醒

誤區後果正確做法
直接 rm db2diag.log 而未停實例檔案控制代碼未釋放,磁碟空間不釋放;DB2 可能掛起必須 db2stop 後再刪除
PRUNE 至最新作用中日誌切斷恢復鏈,PITR (時間點恢復) 失效保留至少一個完整備份週期的日誌
清理 db2diag.log 但未備份遺失歷史錯誤線索,事後分析盲區務必先備份再刪除

結語

日誌管理是 DB2 穩定運行的生命線。PRUNE 而非 rm、備份後再清理、善用自動輪轉參數 三大原則貫徹執行,即可在合規與磁碟空間間取得平衡。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved