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

DB2 大量 INSERT 避免日誌暴增:NOT LOGGED INITIALLY + ALTER ACTIVATE 實戰

     編輯:DB2 教學

問題場景

單次 INSERT INTO a SELECT * FROM b ... 寫入 600 萬列,循環日誌擴至 1.5GB 仍報 SQL0964C log full,且極慢。

解決方案:NOT LOGGED INITIALLY (NLI)

  1. 建表時指定 NOT LOGGED INITIALLY:CREATE TABLE a (...) NOT LOGGED INITIALLY。
  2. 關閉自動提交:db2 +c。
  3. 激活 NLI:ALTER TABLE a ACTIVATE NOT LOGGED INITIALLY。
  4. 執行 INSERT/LOAD。
  5. COMMIT → NLI 自動關閉。

關鍵限制

  • NLI 僅在 COMMIT 前 生效,Commit 後恢復正常日誌。
  • 此段操作無日誌可供前滾恢復,Commit 後必須立即備份。
  • 不建議常態化使用;大量資料首選 LOAD/IMPORT。

替代參數調整

  • 循環日誌下調整 COMMITCOUNT 批次提交頻率。
  • 控制中心 → 設定 → 日誌 → 日誌活動 → 關閉記錄(不推薦生產環境)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved