在 Unix/Linux 平台,使用 db2 -td@ -vf <script> 建立預存程序失敗,db2diag.log 記錄誤導性的「磁碟錯誤」:
DIA8402C A disk error has occurred. ZRC=0x860F0004
...
instance owner does not belong to fenced user's primary group
並非磁碟故障。DB2 要求實例用戶必須屬於受防護用戶的主群組。錯誤發生原因:實例用戶未加入該群組,導致預存程序編譯/執行所需的臨時目錄存取權限不足。
sqllib/adm。ls -l .fenced,輸出範例:
-r--r--r-- 1 db2fenc1 db2fgrp1 0 Jul 30 09:57 .fenced
db2fenc1 = 受防護用戶db2fgrp1 = 受防護用戶的主群組執行 groups <instance_user>,確認輸出包含上述主群組(如 db2fgrp1)。
以 root 身份執行:
usermod -a -G db2fgrp1 <instance_user>
修改生效後,需重新登入或重啟 DB2 實例使群組變更生效。
db2diag.log 中的 "disk error" 為真實硬體故障 → 浪費時間排查存儲。
Unix/Linux 下 DB2 預存程序建立失敗且日誌顯示 "disk error" 時,優先檢查實例用戶是否屬於受防護用戶的主群組。透過 .fenced 檔案快速定位正確群組並補齊權限,即可徹底解決問題,避免誤判硬體故障。