随着主机DB2技术的发展,DB2产品的功能越来越丰富,以及DB2产品增强了对其分布式访问功能,所以正确配置 DB2 产品提供的存储过程,就越来越重要。对现在的主机数据库用户来说,DB2 9 for z/OS下的存储过程已经从一个可选项逐渐演变成了在数据库应用开发考虑的重要因素。在主机数据库存储过程的应用方面,除了用户可以根据需要开发存储过程外。主机数据库产品也提供了功能丰富的各类存储过程供用户使用。本篇就是为了帮助主机系统和开发人员更好的规划和实施基于主机数据库(DB2 for z/OS)的存储过程。
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后,重新开始记数。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
TT百科:存储过程
存储的过程可以访问或修改数据库中的数据,但并不绑定到特定的数据库或对象,这提供了许多优点。
-
在Oracle数据库的自定义函数中调用存储过程
在Oracle数据库的自定义函数中调用存储过程是否可行,Oracle专家Brian Peasland给出了具体的解答。
-
数据库工程师2012年3月刊:数据库2012
数据库的2012,不是末日而是新生。传统厂商纷纷发布大版本更新的数据库产品,开源技术更加强势,2012的精彩始于《数据库工程师》……
-
解读SQL Server数据库存储过程发展历史
SQL Server存储过程可以是Transact-SQL(T-SQL)语句,或者是.NET框架的公共语言运行时(CLR),它是专为方便数据库查询而设计的。