SQL1042C 發生意外的系統錯誤。
SQL1032N 未發出啟動資料庫管理器的命令。 SQLSTATE=57019
db2start 失敗,實例無法啟動。錯誤訊息極度通用,實際成因卻大相徑庭。本文彙整三種最常見實戰案例與排查路徑。
DB2- 顯示「無法啟動」,事件檢視器記錄:DB2- 服務因 4294959296 服務性錯誤而停止。來源 SERVICE CONTROL 事件 ID: 7024 db2start 回傳 SQL1032N / SQL1042C。DB2 授權到期。實例服務啟動時會檢查授權有效性,過期即拒絕啟動。
db2licm -l
輸出中 Expiration date 已過或顯示 Trial expired。
db2licm -a <license_file> 安裝新授權檔。db2stop/db2start。論壇高頻提問。只要不確定是否擁有永久授權,遇 SQL1032N 首先跑 db2licm -l 排除授權問題,可省去大量無效排查。
錯誤 1069:登入失敗。db2start 同樣回傳 SQL1032N。Windows 服務設定的「登入身分」帳號密碼與實際不符。常見於:
services.msc,找到 DB2- 服務。SQL30081N 通訊錯誤 TCP/IP connect 10061。db2start 仍報 SQL1032N / SQL1042C。db2diag.log 關鍵訊息:Failed to create the memory segment used for communication with fenced routines.
If re-starting db2, ensure no db2fmp processes were on the instance prior to start.
Otherwise, you can adjust this value through DB2_FMP_COMM_HEAPSZ db2set value,
or by decreasing your ASLHEAPSZ setting.上次實例異常終止時,db2fmp(受防護模式進程,用於執行受防護存儲過程/UDF)未正常清理,殘留共享記憶體區段,導致新啟動無法建立通訊堆。
ps -ef | grep db2fmp 找出所有殘留進程(Windows 用任務管理器)。kill -9 <pid> 全部終結。db2start 即可成功。出錯先看
db2diag.log,永遠不會錯。 錯誤訊息往往直接指向根因(如上例明確提示ensure no db2fmp processes),避免在網路、防火牆、TCP/IP 參數上浪費時間。
| 徵兆 | 關鍵線索 | 根因 | 解決 |
|---|---|---|---|
| 服務啟動失敗、事件 7024 | db2licm -l 顯示過期 | 授權到期 | 安裝新授權檔 |
| 服務錯誤 1069 | 服務登入頁籤帳號/密碼 | 服務帳號密碼不符 | 更新服務登入認證 |
| SQL30081N + db2diag.log 提示 db2fmp | 殘留 db2fmp 進程 | 共享記憶體未釋放 | kill -9 db2fmp 後重啟 |
db2stop force 前先確認無殘留 db2fmp,或在啟動腳本中加入清理步驟。db2diag.log」的肌肉記憶,錯誤訊息是最精準的地圖。