【DB2】資料庫的事務日誌已滿。SQLSTATE=57011
問題描述
在使用資料庫的時候報錯如上圖,我們先使用db2 get db cfg for sample檢視相關配置引數,其中sample為資料庫名稱
C:\Users\Thinkpad>db2 get db cfg for sample 資料庫 sample 的資料庫配置 資料庫配置發行版級別 = 0x1400 資料庫地域 = CN 語句集中器 (STMT_CONC) = OFF 對此資料庫的發現支援 (DISCOVER_DB) = ENABLE 限制訪問 = NO 十進位制浮點舍入方式 (DECFLT_ROUNDING) = ROUND_HALF_EVEN 十進位制運算方式 (DEC_ARITHMETIC) = 備份暫掛 = NO 已將所有已落實的事務寫入磁碟 = NO 升級暫掛 = NO 啟用的多頁檔案分配 = YES 恢復狀態的日誌保留 = NO 自調整記憶體 (SELF_TUNING_MEM) = OFF 資料庫堆 (4KB) (DBHEAP) = AUTOMATIC(600) 檢查死鎖的時間間隔(毫秒) (DLCHKTIME) = 10000 更改的頁閾值 (CHNGPGS_THRESH) = 60 跟蹤修改的頁數 (TRACKMOD) = NO 容器的預設數目 = 1 最大活動應用程式數 (MAXAPPLS) = AUTOMATIC(40) 日誌檔案大小 (4KB) (LOGFILSIZ) = 1000 軟檢查點前回收的日誌檔案的百分比 (SOFTMAX) = 0 HADR 資料庫角色 = STANDARD 第一個日誌歸檔方法 (LOGARCHMETH1) = OFF 啟用的自動重新啟動 (AUTORESTART) = ON TSM 管理類 (TSM_MGMTCLASS) = 自動維護 (AUTO_MAINT) = ON 自動重新驗證 (AUTO_REVAL) = DEFERRED 當前已落實 (CUR_COMMIT) = ON SMTP 伺服器 (SMTP_SERVER) = WLM 收集時間間隔(分鐘) (WLM_COLLECT_INT) = 0 |
解決方法
C:\Users\Thinkpad>db2 update db cfg for sample using LOGFILSIZ 8096 C:\Users\Thinkpad>db2 update db cfg for sample using LOGPRIMARY 20 C:\Users\Thinkpad>db2 update db cfg for sample using LOGSECOND 15 |
設定完畢後,重啟資料庫引數即可生效;
特別說明:
①調整的順序,為減少對應用的影響,建議先從logsecond引數著手,因為logsecond是按需分配,當不需要的時候DB2會考慮回收,不會造成空間浪費,而且
logsecond引數修改會立即生效,不需要斷開連線,不會對業務造成中斷影響logprimary+logsecond引數的值不超過255,如果增加了logsecond仍然不能
解決問題,可以考慮修改logpriimary和logfilsiz大小,但是這兩個引數設定後需要重啟資料庫才生效②總事務日誌容量大小=(LOGPRIMARY+LOGSECOND)*LOGFILSIZ*4k