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

解決 DB2 交易日誌滿錯誤:調整 LOGFILSIZ、LOGPRIMARY、LOGSECOND 參數完整教學

     編輯:DB2 教學

錯誤現象

執行大量 INSERT/UPDATE 時出現 SQL0964C The transaction log for the database is full,代表交易日誌空間耗盡。

檢視現有日誌設定

db2 get db cfg | grep LOG

關鍵參數說明:

  • LOGFILSIZ:單一日誌檔案大小 (4KB 頁數),預設 1024 (即 4MB)。
  • LOGPRIMARY:主要日誌檔案數量,預分配且循環使用。
  • LOGSECOND:次要日誌檔案數量,主要檔用盡時動態分配,用完即釋放。

調整參數範例 (依實際負載放大 10 倍)

db2 update db cfg using LOGFILSIZ 10240
db2 update db cfg using LOGPRIMARY 100
db2 update db cfg using LOGSECOND 100

生效步驟

  1. 修改參數後需重啟實例:
    db2stop force
    db2start
  2. 再次檢視確認:
    db2 get db cfg | grep LOG
  3. 重新執行原失敗的大量 DML 操作。

補充建議

  • 若資料庫啟用 歸檔日誌模式 (LOGARCHMETH1),需確保歸檔目的地有足夠空間且歸檔速度跟上產生日誌速度,否則仍會導致日誌填滿。
  • 可搭配 db2pd -db <db> -logs 監控日誌使用率。
  • 長期大量載入建議使用 LOAD 指令 (可指定 NONRECOVERABLE 略過日誌) 或分批提交交易。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved