AIX 上運行 DB2 UDB 時,常遇到 SQL8008N:「產品未安裝有效許可證或已過期」,導致實例無法啟動、連接被拒、功能受限。本文提供從許可證文件檢查、安裝/更新、nodelock 一致性、LUM (License Use Management) 服務驗證到實例升級的標準化排查手冊,覆蓋 DB2 V5/V6/V7 (邏輯適用於後續版本)。
/var/ifor/nodelock (運行時) 與 /usr/lib/netls/conf/nodelock (舊版兼容路徑)。# 以 root 登錄
# DB2 V5
vi /usr/lib/netls/conf/nodelock
# DB2 V6/V7
/opt/IBM/db2/V11.5/adm/db2licm -l
# 或
su - -c "db2licm -l"
關鍵輸出字段:
Product Name:如 DB2 Enterprise Server EditionExpiry Date:Permanent 或具體日期 (YYYY-MM-DD)Enforcement Policy:Soft Stop (過期僅警告) / Hard Stop (過期拒絕服務)Number of licensed processors:需 ≥ 物理核心數 (PVU 模式下)若無輸出、或 Expiry Date 已過、或 licensed processors 不足 → 進入步驟 2。
# DB2 V5
/opt/IBM/db2/V5.0/cfg/db2licinst
# DB2 V6/V7/V8/9/10/11
/opt/IBM/db2/V11.5/adm/db2licm -a
license_file_full_path 為安裝介質或 IBM License Key Center 下載的 .lic 文件絕對路徑。執行後自動寫入 /var/ifor/nodelock。
歷史原因導致兩路徑可能不同步,強制建立符號鏈接:
ln -sf /var/ifor/nodelock /usr/lib/netls/conf/nodelock
驗證內容:
vi /var/ifor/nodelock
# 應見類似兩行:
# 5fbcdefg6feb.02.09.15.0f.48.00.00.00 6qx2v39a6sb5ipvmaxpaa 7.1
# #[admin_comment] IBM Toronto Lab DB2 Enterprise Edition 2145844800 0
第二行註釋中 2145844800 為 Unix 時間戳 (對應 2037 年),若已過期或無此兩行 → 註釋舊行 (# 加行首) → 重執行步驟 2。
lssrc -g iforls
# 輸出中至少一項為 "active" 即正常
# 若為 inoperative/stopped → 步驟 5
lslpp -l | grep ifor_ls.base.cli
# 輸出示例:ifor_ls.base.cli 4.3.3.25 COMMITTED License Use Management Runtime
# 版本過舊 → 步驟 6
installp -aXGd ifor_ls.base.cli 安裝升級。/var/ifor/i4cfg -script
# 交互式向導完成 LUM 站點配置、主/備服務器設置、域同步
/var/ifor/i4blt -lp -i | more
# 應列出 DB2 產品許可證條目,狀態為 "Valid"
cd /opt/IBM/db2/V11.5/instance
./db2iupdt
# 輸出 "DBI1446I Instance updated successfully."
su -
db2start
db2 connect to
db2 "select * from sysibm.sysdummy1"
# 返回 1 行無報錯 → 修復成功
| 陷阱 | 癥狀 | 根因 | 對策 |
|---|---|---|---|
使用 AIX smit install 安裝 DB2 而非 db2setup | 安裝完成但無許可證自動註冊 | 系統安裝工具不調用 DB2 許可證註冊邏輯 | 安裝後手動執行 db2licm -a |
| nodelock 文件權限錯誤 | db2licm -l 權限拒絕 / 內容為空 | 文件屬主非 root:system 或 644 權限缺失 | chown root:system /var/ifor/nodelock; chmod 644 /var/ifor/nodelock |
| LUM 未啟用自動啟動 | 重啟後 SQL8008N 復發 | /etc/rc.lum 未加入啟動腳本 | mkitab "lum:2:once:/etc/rc.lum >/dev/console 2>&1" |
| PVU 授權核心數不足 | 啟動成功但並發連接受限 / 功能降級 | licensed processors < 物理核心 | 採購足夠 PVU 授權並重新導入 .lic |
| 時間同步漂移導致許可證誤判過期 | 明明永久授權卻報過期 | 系統時間跳變觸發 LUM 過期檢查邏輯 | 配置 NTP 時間同步;檢查 date 與硬件時鐘一致 |
#!/bin/ksh
# 日志巡檢 DB2 許可證健康度
LIC_FILE="/var/ifor/nodelock"
if [[ ! -f $LIC_FILE ]]; then
echo "CRITICAL: nodelock missing"
exit 2
fi
if ! grep -q "Expiry Date = Permanent" $LIC_FILE; then
EXP=$(grep "Expiry Date" $LIC_FILE | awk -F= '{print $2}' | xargs)
if [[ "$EXP" != "Permanent" ]]; then
EXP_EPOCH=$(date -d "$EXP" +%s 2>/dev/null)
NOW_EPOCH=$(date +%s)
if (( EXP_EPOCH < NOW_EPOCH )); then
echo "CRITICAL: License expired on $EXP"
exit 2
fi
fi
fi
lssrc -g iforls | grep -q active || { echo "CRITICAL: LUM inactive"; exit 2; }
echo "OK: DB2 license healthy"
exit 0
將上述腳本納入監控體系 (Nagios/Zabbix/Prometheus Node Exporter),實現許可證狀態主動感知,避免業務停機驚慌處理。