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

主機 DB2 9 存儲過程規劃與實施全攻略

     編輯:DB2 教學

主機 DB2 9 存儲過程規劃與實施全攻略

隨著 IBM DB2 for z/OS 功能的持續增強,尤其是分布式訪問能力的提升,存儲過程已從可選項演變為數據庫應用開發的核心考量因素。本文系統梳理了主機 DB2 9 存儲過程的架構特點、分類策略、WLM 環境配置要點,並提供四類典型啟動作業(JCL)範例,助力系統程序員與開發人員高效落地。

核心架構:WLM 統一管理

DB2 9 起,所有存儲過程均由 z/OS Workload Manager(WLM)通過「應用環境」統一管控。當存儲過程被調用時,WLM 依據應用環境自動啟動對應的啟動作業,分配 TCB(Task Control Block)執行邏輯。這一定程度上簡化了運維,但也要求在定義應用環境時,務必綜合考慮功能屬性、開發語言、性能指標與資源隔離需求。

存儲過程分類策略

建議將 DB2 產品自帶存儲過程劃分為四大類,各類對應獨立的 WLM 應用環境與啟動作業:

  • 在線 Utility 類:如 DSNUTILS、DSNUTILU。涉及臨時文件生成,NUMTCB 必須設為 1,禁止並發,避免文件互相覆蓋導致錯誤。
  • 通用高並發類:覆蓋大多數業務存儲過程。NUMTCB 建議 40~60,視系統資源調整。
  • REXX 語言類:啟動作業需包含 SYSEXEC、SQL 相關 DD、編譯器庫等;NUMTCB 強制為 1。
  • Java 語言類:運行於 USS 環境,需額外指定 JAVAENV 數據集,配置 JAVA_HOME、CLASSPATH、LIBPATH 等環境變量;NUMTCB 建議 5。

關鍵配置參數詳解(DSNTIPX 面板)

參數對應 DSNZPARM說明與建議
WLM PROC NAME—生成 Sample 作業時的默認存儲過程名稱
NUMBER OF TCBS—單地址空間並發 TCB 數,受 USS MAXPROCUSER 限制
MAX ABEND COUNTSTORMXAB允許失敗次數,默認 0 即首次異常即終止
TIMEOUT VALUESTORTIME等待 TCB 分配秒數,建議勿設 NOLIMIT,防止無限等待
WLM ENVIRONMENTWLMENV未顯式指定時的默認應用環境名
MAX OPEN CURSORSMAX_NUM_CUR每線程最大打開游標數
MAX STORED PROCSMAX_ST_PROC每線程每 COMMIT 週期最大調用存儲過程數

四大類啟動作業範例

1. 在線 Utility 專用(NUMTCB=1)

//DB11WLM1 PROC APPLENV=DB11WLM1,DB2SSN=DSN,RGN=0K,NUMTCB=1
//IEFPROC EXEC PGM=DSNX9WLM,REGION=&RGN,TIME=NOLIMIT,
// PARM='&DB2SSN,&NUMTCB,&APPLENV'
//STEPLIB DD DISP=SHR,DSN=prefix.SCEERUN
// DD DISP=SHR,DSN=prefix.SDSNEXIT
// DD DISP=SHR,DSN=prefix.SDSNLOAD
//UTPRINT DD SYSOUT=*
//RNPRIN01 DD SYSOUT=*
//DSSPRINT DD SYSOUT=*
//SYSIN DD UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SYSPRINT DD UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)

2. 通用高並發環境(NUMTCB=40)

//DB11WLM2 PROC APPLENV=DB11WLM2,DB2SSN=DSN,RGN=0K,NUMTCB=40
//IEFPROC EXEC PGM=DSNX9WLM,REGION=&RGN,TIME=NOLIMIT,
// PARM='&DB2SSN,&NUMTCB,&APPLENV'
//STEPLIB DD DISP=SHR,DSN=prefix.SCEERUN
// DD DISP=SHR,DSN=prefix.SDSNEXIT
// DD DISP=SHR,DSN=prefix.SDSNLOAD
//* 可選:CICS、MQ 相關庫按需取消註釋

3. REXX 專用環境(NUMTCB=1,含完整 SQL Processor 支持)

//DB11WLMR PROC APPLENV=DB11WLM_REXX,DB2SSN=DSN,RGN=0K,NUMTCB=1
//IEFPROC EXEC PGM=DSNX9WLM,REGION=&RGN,TIME=NOLIMIT,
// DYNAMNBR=5,
// PARM='&DB2SSN,1,&APPLENV'
//STEPLIB DD DISP=SHR,DSN=prefix.RUNLIB.LOAD
// DD DISP=SHR,DSN=CBC!!.SCCNCMP
// DD DISP=SHR,DSN=prefix.SCEERUN
// DD DISP=SHR,DSN=prefix.SDSNEXIT
// DD DISP=SHR,DSN=prefix.SDSNLOAD
//SYSEXEC DD DISP=SHR,DSN=DSN!!0.SDSNCLST
//SYSTSPRT DD SYSOUT=*
//CEEDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSABEND DD DUMMY
//DSNTRACE DD SYSOUT=*
//SQLDBRM DD DISP=SHR,DSN=DSN!!0.DBRMLIB.DATA
//SQLCSRC DD DISP=SHR,DSN=DSN!!0.SRCLIB.DATA
//SQLLMOD DD DISP=SHR,DSN=DSN!!0.RUNLIB.LOAD
// ...(其餘 SQL Processor 所需工作文件 DD 略)

4. Java 專用環境(NUMTCB=5,USS 運行)

//DB11WLMJ PROC APPLENV=DB11WLM_Java,DB2SSN=DSN,RGN=0K,NUMTCB=5
//IEFPROC EXEC PGM=DSNX9WLM,REGION=&RGN,TIME=NOLIMIT,
// PARM='&DB2SSN,&NUMTCB,&APPLENV'
//STEPLIB DD DISP=SHR,DSN=prefix.SCEERUN
// DD DISP=SHR,DSN=prefix.SDSNEXIT
// DD DISP=SHR,DSN=prefix.SDSNLOAD
//JAVAENV DD DISP=SHR,DSN=prefix.DB11WLMJ.JavaENV
//JSPDEBUG DD SYSOUT=*
//JAVAOUT DD PATH='/V1R7/USR/db2a10/JavaOUT.TXT',...
//JAVAERR DD PATH='/V1R7/USR/db2a10/JavaERR.TXT',...

JavaENV 配置要點:需指定 _CEE_ENVFILE 指向 nolimit.txt(含 LIBPATH、CLASSPATH、DB2_HOME、WORK_DIR 等),並設定 DB2SQLJPROPERTIES 指向 db2sqljjdbc.properties(含 SSID、PLAN、TRACE、連接池參數等)。

分布式連接驗證

服務端確保 DDF 已啟動,客戶端執行:

db2 catalog tcpip node <NODE> remote <IP> server <PORT>
db2 catalog dcs database <DBNAME> as <LOCATION>
db2 catalog database <DBNAME> as <ALIAS> at node <NODE> authentication DCS
db2 connect to <ALIAS> user <USER> using <PWD>

可通過 MVS 命令 -DISPLAY DDF 核對 Location、IP、Port 信息。

最佳實踐提醒

  • 優先應用最新 PTF/APAR,確保功能完整。
  • 應用環境名與啟動作業名保持一致,便於運維識別。
  • 分類粒度遵循「滿足需求前提下最小化」原則,減少 WLM 定義數量。
  • 涉及 APF 授權的數據集需額外關注權限設置。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved