重裝或升級後,為確保 SQL 儲存程序可編譯,需設定編譯器選項:
# 建立 set_cpl 腳本並賦予執行權限
chmod +x set_cpl
./set_cpl
set_cpl 內容:
db2set DB2_SQLROUTINE_COMPILE_COMMAND="xlc_r -g \
-I\$HOME/sqllib/include SQLROUTINE_FILENAME.c \
-bE:SQLROUTINE_FILENAME.exp -e SQLROUTINE_ENTRY \
-o SQLROUTINE_FILENAME -L\$HOME/sqllib/lib -lc -ldb2"
db2set DB2_SQLROUTINE_KEEP_FILES=1
DB2_SQLROUTINE_COMPILE_COMMAND:指定 C 編譯器 (xlc_r) 及連結選項,SQLROUTINE_FILENAME 為 DB2 運行時自動替換的佔位符。DB2_SQLROUTINE_KEEP_FILES=1:保留生成的 .c/.exp 檔案,方便除錯。-- 查看目前選項
DB2 => LIST COMMAND OPTIONS
-- 臨時修改 (僅目前工作階段)
DB2 => UPDATE COMMAND OPTIONS USING C OFF
-- 永久修改 (寫入 Registry)
DB2 => DB2SET DB2OPTIONS=+C -- 開啟自動提交
DB2 => DB2SET DB2OPTIONS=-C -- 關閉自動提交
C 選項控制 自動提交 行為。-- 永久設定 SQL SP 預編譯隔離等級
DB2SET DB2_SQLROUTINE_PREPOPTS=CS|RR|RS|UR
-- 互動模式變更目前工作階段隔離等級 (需未連線資料庫)
DB2 => CHANGE ISOLATION TO UR
GET DB CFG FOR HEAD -- 資料庫層級
GET DBM CFG -- 實例層級
DB2 BIND @DB2UBIND.LST
DB2 BIND @DB2CLI.LST
SQL0805N 等錯誤。DB2 UPDATE DBM CFG USING DFT_MON_LOCK ON
DB2 GET SNAPSHOT FOR LOCKS ON CLEARDB > SNAP.LOG
亦可同時擷取 TABLES、BUFFERPOOLS、TABLESPACES、DATABASE 快照。
DB2 UPDATE DBM CFG USING DFT_MON_LOCK OFF
常見情境:命令中心互動查詢加 S 鎖 (共享鎖),後續 UPDATE 需 X 鎖 (排他鎖) 導致鎖等待。快照可精確定位阻塞鏈。