本文主要介绍主机 DB2 上的存储过程的规划和实施经验,帮助用户了解主机 DB2 上的存储过程的基本特点及其如何进行分类实施。

跟着主机 DB2 技能的开展,DB2 产品的功用越来越丰厚,以及 DB2 产品增强了对其分布式拜访功用,所以正确装备 DB2 产品供给的存储进程,就越来越重要。对现在的主机数据库用户来说,DB2 9 for z/OS 下的存储进程现已从一个可选项逐步演化成了在数据库运用开发考虑的重要因素。在主机数据库存储进程的运用方面,除了用户能够依据需求开发存储进程外。主机数据库产品也供给了功用丰厚的各类存储进程供用户运用。本篇便是为了协助主机体系和开发人员更好的规划和施行依据主机数据库(DB2 for z/OS)的存储进程。

DB2 9存储进程的规划和施行技巧(db2存储过程执行计划)  存储过程 实施 第1张

DB2 版别 9 今后,主机上一切的存储进程都统一由 z/OS 的一个子体系 WLM 来统一办理,WLM 是经过运用环境(Application Environment)来办理存储进程的,当存储进程被调用时,WLM 会主动发动和运用环境相应的发动作业来办理和完结所需求的存储进程功用。

咱们能够把数据库存储进程分为 DB2 体系产品数据库存储进程和用户开发的存储进程。关于 DB2 数据库体系产品的存储进程,依照存储进程的功用,开发言语,功用要求等,咱们会设置不同的数据库存储进程运转环境。下面的篇幅会晤较详细的介绍这方面的状况。关于用户编写的存储进程,存储进程装备基本原则是相同,都需求依据实践运用开发功用和功用的要求进行规划施行,都需求依据详细要求进行详细分析,这儿不再做首要描绘。

存储进程的客户化规划和施行

在施行主机供给的 DB2 存储进程的时分,就象上文说到的,需求考虑到存储进程调用时的履行要求,这些要求包含存储进程履行的功用是怎么样的,调用时约束条件以及存储进程有无特别功用要求等。正确装备 DB2 存储进程,以下几个方面是比较重要而应该被要点重视的:

同存储进程相关的 DB2 子体系装备

因为 DB2 9 产品发布后,包含针对存储进程在内一些新的功用增强,DB2 体系都是经过施行 PTF 或 APAR 的方法来完结的,所以需求承认相关的数据库产品的 PTF 或 APAR 是否现已正确施行。详细需求施行的 PTF 或 APAR 能够参阅相关的材料。

在 DB2 9 的装置流程里,装置界面 Panel DSNTIPX 是来装备和存储进程相关的参数的,是用来生成装置所需求的 Sample 作业。

清单 1. DB2 9 装置界面 DSNTIPX

DSNTIPX INSTALL DB2 - ROUTINE PARAMETERS 
  ===> 
  Scrolling backward may change fields marked with asterisks
  Enter data below:

  * 1 WLM PROC NAME ===> DSN1WLM WLM-established stored procedure JCL PROC
  2 NUMBER OF TCBS ===> 8 Number of concurrent TCBs (1-100)
  3 MAX ABEND COUNT ===> 0 Allowable ABENDs for a procedure (0-255)
  4 TIMEOUT VALUE ===> 180 Seconds to wait before SQL CALL or
  function invocation fails (5-1800,NOLIMIT)
  5 WLM ENVIRONMENT ===> Default WLM env name
  6 MAX OPEN CURSORS ===> 500 Maximum open cursors per thread
  7 MAX STORED PROCS ===> 2000 Maximum active stored procs per thread

其间,关于 DSNTIPX 所触及到的参数,下面做一个扼要的描绘:

◆WLM PROC NAME

用来指定在装置进程中生成 Sample 中作业的缺省存储进程的姓名。

◆NUMBER OF TCBS

用来指定在 WLM 发动的一个地址空间里,能够并发调用多少个存储进程。这个值也遭到 USS 下的 MAXPROCUSER(每一个用户在主机 USS 环境下***能够有多少个 processes)参数的约束。

◆MAX ABEND COUNT

在 DSNZPARM 里对应的参数是 STORMXAB,用来指定存储进程能够有多少次调用失利后,整个调用完毕。缺省值为 0,意味着在存储进程***次履行不正常完毕时,存储进程调用完毕。

◆TIMEOUT VALUE

对应的 DSNZPARM 参数是 STORTIME。用来指定在存储进程地址空间里,DB2 容许等候存储进程分配 TCB 的时刻,单位为秒。假如在这个时刻段内没有被分配一个 TCB 来履行,存储进程调用失利。引荐不要设为 NOLIMIT,因为假如设为 NOLIMIT,当出现异常例如存储进程地址空间被关掉,存储进程调用恳求会一向等候分配 TCB,直到条件满意或许 thread 被撤销。

◆WLM ENVIRONMENT

对应的 DSNZPARM 参数为 WLMENV,用来指定在界说存储进程时,假如没有指定 WLM_ENVIRONMENT 的值时,体系会主动分配的 WLM 运用环境的姓名。

◆MAX OPEN CURSORS

对应的 DSNZPARM 参数是 MAX_NUM_CUR,用来指定每一个 DB2 运用 thread ***能够翻开的 cursors 数量

◆MAX STORED PROCS

对应的 DSNZPARM 参数是 MAX_ST_PROC。用来设定 DB2 运用 thread 能够调用的***存储进程数量。在每一次 COMMIT 后,重新开始记数。
#p#

主机 WLM 运用环境的规划和施行

DB2 9 之后,一切的存储进程都运转在 WLM 运用环境办理之下,因为主机数据库下存储进程数量较多,咱们在定制的时分,需求把具有相似特点的存储进程界说在一个运用环境下。意图是***极限的削减 WLM 运用环境的界说数量。当然假如你仅仅客户化少数的存储进程或许是对某些存储进程有一些特定的要求,例如功用或存储等,也能够界说粒度更小的 WLM 运用环境。别的在一些存储进程里所触及的数据集里,有一些是需求具有 APF 特点的,需求特别留意。以下为一个 WLM 运用环境的界说比如,比如中运用环境所对应的发动作业为 DB11WLM1。

清单 2. 主机 WLM 运用环境界说界面

Appl Environment Name . . DB11WLM1 
  Description . . . . . . . DB2 DB11WLM1
  Subsystem type . . . . . DB2
  Procedure name . . . . . DB11WLM1
  Start parameters . . . . DB2SSN=&IWMSSNM,NUMTCB=1,APPLENV=DB11WLM1

创立 DB2 存储进程

DB2 产品供给的存储进程是经过客户化 DSNTIJSG 作业来界说的。在提交作业完结创立存储进程之前,需求对存储进程进行必要的规划。依据存储进程的功用不同,主张分为以下 4 类:

表 1. 存储进程的分类

别的,需求留意以下几点:

1.存储进程的分类或许会依据 DB2 的 PTF 版别不同而有改动;

2.存储进程的 NUMTCB 的设置除了依据存储进程的功用要求外,还依赖于体系资源状况;

3.主张 WLM 运用环境和发动进程称号共同,便于办理;

4.存储进程分类的粒度依据实践状况或许会有不同,基本原则为在满意功用需求的状况下,尽或许的简化装备,便于办理。

以下咱们要点介绍为四个不同的 WLM 运用环境预备的发动作业进程,经过发动作业能够为 WLM 环境预备不同的存储进程履行环境。

为在线 Utility 履行而预备的存储进程

此类存储进程功用是需求调用数据库的在线 UTILITY,例如数据库所供给的 DSNUTILS 和 DSNUTILU,在装备此类存储进程的时分,NUMTCB 要求界说为 1,也便是不容许并发调用。首要是因为在调用时,会生成一些中心文件,假如容许一起调用存储进程的话,这些文件会被相互掩盖,导致不行意料的过错产生。

以下为此类存储进程所调用的发动作业。在作业中的 SYSIN 是分配一些暂时空间存储 Utility 的输入句子。SYSPRINT 是分配暂时空间来存储 utility 的输出信息。RNPRIN01 是为 DFSORT 信息所分配的空间,UTPRINT 也是为 DFSORT 信息所分配的空间,DSSPRINT 是当履行 concurrent copies 时,为输出信息分配空间。

清单 3. 在线 Utility 存储进程对应的 STC 作业

//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)

为通用状况预备的存储进程

别的,咱们为大多数的存储进程预备了一套运转环境,所预备的发动作业如下所示,其间 NUMTCB 能够依据体系资源状况来定,一般引荐能够设置为 40 或 60。

清单 4. 通用状况下存储进程对应的 STC 作业

//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.SDFHEXCI For CICS
  // DD DISP=SHR,DSN=prefix.SDSNEXIT
  // DD DISP=SHR,DSN=prefix.SDSNLOAD
  //* DD DISP=SHR,DSN=prefix.SCSQLOAD For MQ
  //* DD DISP=SHR,DSN=prefix.SCSQAUTH For MQ
  //* DD DISP=SHR,DSN=prefix.SCSQANLE For MQ
  //*SYSIN DD SYSOUT=* For Debugger and XML
  //*SYSPRINT DD SYSOUT=*
  //*WSERROR DD PATH='/tmp/wsc.err', For Web_SERVICES
  //* PATHOPTS=(ORDWR,OCREAT,OAPPEND),
  //* PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP,SIROTH,SIWOTH)

REXX 言语编写的存储进程

关于由 REXX 言语写的存储进程来说,发动作业同其他类型的存储进程是不同的。见下面的比如。需求特别提出的是,REXX 类型的存储进程的 NUMTCB 应该设为 1。

清单5. REXX 存储进程对应的STC作业

//DB11WLMR PROC APPLENV=DB11WLM_REXX,DB2SSN=DSN,RGN=0K,NUMTCB=1 
  //IEFPROC EXEC PGM=DSNX9WLM,REGION=&RGN,TIME=NOLIMIT,
  // DYNAMNBR=5,
转载请说明出处
知优网 » DB2 9存储进程的规划和施行技巧(db2存储过程执行计划)

发表评论

您需要后才能发表评论