首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 程式設計技巧精選 (九) - 環境變數、命令選項與死結分析

     編輯:DB2 教學

4. 系統管理實務 (續)

4.11 DB2 環境變數設定 (AIX/UNIX)

重裝或升級後,為確保 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 檔案,方便除錯。

4.12 CLP 命令選項設定

-- 查看目前選項
DB2 => LIST COMMAND OPTIONS

-- 臨時修改 (僅目前工作階段)
DB2 => UPDATE COMMAND OPTIONS USING C OFF

-- 永久修改 (寫入 Registry)
DB2 => DB2SET DB2OPTIONS=+C   -- 開啟自動提交
DB2 => DB2SET DB2OPTIONS=-C   -- 關閉自動提交
  • C 選項控制 自動提交 行為。

4.13 隔離等級變更

-- 永久設定 SQL SP 預編譯隔離等級
DB2SET DB2_SQLROUTINE_PREPOPTS=CS|RR|RS|UR

-- 互動模式變更目前工作階段隔離等級 (需未連線資料庫)
DB2 => CHANGE ISOLATION TO UR

4.14 參數管理速查

GET DB CFG FOR HEAD      -- 資料庫層級
GET DBM CFG              -- 實例層級

4.15 升級後消除套件版本問題

DB2 BIND @DB2UBIND.LST
DB2 BIND @DB2CLI.LST
  • 重新繫結系統套件,解決版本不符導致的 SQL0805N 等錯誤。

4.16 死結分析完整流程

  1. 開啟鎖定監控:
    DB2 UPDATE DBM CFG USING DFT_MON_LOCK ON
  2. 擷取快照:
    DB2 GET SNAPSHOT FOR LOCKS ON CLEARDB > SNAP.LOG

    亦可同時擷取 TABLES、BUFFERPOOLS、TABLESPACES、DATABASE 快照。

  3. 分析 snap.log:依 Application Handle (應用程式句柄) 追蹤各應用程式持有/等待的鎖。
  4. 關閉監控:
    DB2 UPDATE DBM CFG USING DFT_MON_LOCK OFF

常見情境:命令中心互動查詢加 S 鎖 (共享鎖),後續 UPDATE 需 X 鎖 (排他鎖) 導致鎖等待。快照可精確定位阻塞鏈。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved