講解主機(jī)DB2 9存儲(chǔ)過(guò)程的規(guī)劃和實(shí)施技巧
本文主要介紹主機(jī) DB2 上的存儲(chǔ)過(guò)程的規(guī)劃和實(shí)施經(jīng)驗(yàn),幫助用戶了解主機(jī) DB2 上的存儲(chǔ)過(guò)程的基本特點(diǎn)及其如何進(jìn)行分類實(shí)施。
隨著主機(jī) DB2 技術(shù)的發(fā)展,DB2 產(chǎn)品的功能越來(lái)越豐富,以及 DB2 產(chǎn)品增強(qiáng)了對(duì)其分布式訪問(wèn)功能,所以正確配置 DB2 產(chǎn)品提供的存儲(chǔ)過(guò)程,就越來(lái)越重要。對(duì)現(xiàn)在的主機(jī)數(shù)據(jù)庫(kù)用戶來(lái)說(shuō),DB2 9 for z/OS 下的存儲(chǔ)過(guò)程已經(jīng)從一個(gè)可選項(xiàng)逐漸演變成了在數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)考慮的重要因素。在主機(jī)數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程的應(yīng)用方面,除了用戶可以根據(jù)需要開(kāi)發(fā)存儲(chǔ)過(guò)程外。主機(jī)數(shù)據(jù)庫(kù)產(chǎn)品也提供了功能豐富的各類存儲(chǔ)過(guò)程供用戶使用。本篇就是為了幫助主機(jī)系統(tǒng)和開(kāi)發(fā)人員更好的規(guī)劃和實(shí)施基于主機(jī)數(shù)據(jù)庫(kù)(DB2 for z/OS)的存儲(chǔ)過(guò)程。
DB2 版本 9 以后,主機(jī)上所有的存儲(chǔ)過(guò)程都統(tǒng)一由 z/OS 的一個(gè)子系統(tǒng) WLM 來(lái)統(tǒng)一管理,WLM 是通過(guò)應(yīng)用環(huán)境(Application Environment)來(lái)管理存儲(chǔ)過(guò)程的,當(dāng)存儲(chǔ)過(guò)程被調(diào)用時(shí),WLM 會(huì)自動(dòng)啟動(dòng)和應(yīng)用環(huán)境相應(yīng)的啟動(dòng)作業(yè)來(lái)管理和實(shí)現(xiàn)所需要的存儲(chǔ)過(guò)程功能。
我們可以把數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程分為 DB2 系統(tǒng)產(chǎn)品數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程和用戶開(kāi)發(fā)的存儲(chǔ)過(guò)程。關(guān)于 DB2 數(shù)據(jù)庫(kù)系統(tǒng)產(chǎn)品的存儲(chǔ)過(guò)程,按照存儲(chǔ)過(guò)程的功能,開(kāi)發(fā)語(yǔ)言,性能要求等,我們會(huì)設(shè)置不同的數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程運(yùn)行環(huán)境。下面的篇幅會(huì)面較詳細(xì)的介紹這方面的情況。對(duì)于用戶編寫的存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程配置基本原則是一樣,都需要根據(jù)實(shí)際應(yīng)用開(kāi)發(fā)功能和性能的要求進(jìn)行規(guī)劃實(shí)施,都需要根據(jù)具體要求進(jìn)行具體分析,這里不再做主要描述。
存儲(chǔ)過(guò)程的客戶化規(guī)劃和實(shí)施
在實(shí)施主機(jī)提供的 DB2 存儲(chǔ)過(guò)程的時(shí)候,就象上文提到的,需要考慮到存儲(chǔ)過(guò)程調(diào)用時(shí)的執(zhí)行要求,這些要求包括存儲(chǔ)過(guò)程執(zhí)行的功能是怎么樣的,調(diào)用時(shí)限定條件以及存儲(chǔ)過(guò)程有無(wú)特殊性能要求等。正確配置 DB2 存儲(chǔ)過(guò)程,以下幾個(gè)方面是比較重要而應(yīng)該被重點(diǎn)關(guān)注的:
同存儲(chǔ)過(guò)程相關(guān)的 DB2 子系統(tǒng)配置
由于 DB2 9 產(chǎn)品發(fā)布后,包括針對(duì)存儲(chǔ)過(guò)程在內(nèi)一些新的功能增強(qiáng),DB2 系統(tǒng)都是通過(guò)實(shí)施 PTF 或 APAR 的方式來(lái)實(shí)現(xiàn)的,所以需要確認(rèn)相關(guān)的數(shù)據(jù)庫(kù)產(chǎn)品的 PTF 或 APAR 是否已經(jīng)正確實(shí)施。具體需要實(shí)施的 PTF 或 APAR 可以參考相關(guān)的資料。
在 DB2 9 的安裝流程里,安裝界面 Panel DSNTIPX 是來(lái)配置和存儲(chǔ)過(guò)程相關(guān)的參數(shù)的,是用來(lái)生成安裝所需要的 Sample 作業(yè)。
清單 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
其中,對(duì)于 DSNTIPX 所涉及到的參數(shù),下面做一個(gè)簡(jiǎn)要的描述:
◆WLM PROC NAME
用來(lái)指定在安裝過(guò)程中生成 Sample 中作業(yè)的缺省存儲(chǔ)過(guò)程的名字。
◆NUMBER OF TCBS
用來(lái)指定在 WLM 啟動(dòng)的一個(gè)地址空間里,可以并發(fā)調(diào)用多少個(gè)存儲(chǔ)過(guò)程。這個(gè)值也受到 USS 下的 MAXPROCUSER(每一個(gè)用戶在主機(jī) USS 環(huán)境下最大可以有多少個(gè) processes)參數(shù)的限制。
◆MAX ABEND COUNT
在 DSNZPARM 里對(duì)應(yīng)的參數(shù)是 STORMXAB,用來(lái)指定存儲(chǔ)過(guò)程可以有多少次調(diào)用失敗后,整個(gè)調(diào)用結(jié)束。缺省值為 0,意味著在存儲(chǔ)過(guò)程第一次執(zhí)行不正常結(jié)束時(shí),存儲(chǔ)過(guò)程調(diào)用結(jié)束。
◆TIMEOUT VALUE
對(duì)應(yīng)的 DSNZPARM 參數(shù)是 STORTIME。用來(lái)指定在存儲(chǔ)過(guò)程地址空間里,DB2 容許等待存儲(chǔ)過(guò)程分配 TCB 的時(shí)間,單位為秒。如果在這個(gè)時(shí)間段內(nèi)沒(méi)有被分配一個(gè) TCB 來(lái)執(zhí)行,存儲(chǔ)過(guò)程調(diào)用失敗。推薦不要設(shè)為 NOLIMIT,因?yàn)槿绻O(shè)為 NOLIMIT,當(dāng)出現(xiàn)異常例如存儲(chǔ)過(guò)程地址空間被關(guān)掉,存儲(chǔ)過(guò)程調(diào)用請(qǐng)求會(huì)一直等待分配 TCB,直到條件滿足或者 thread 被取消。
◆WLM ENVIRONMENT
對(duì)應(yīng)的 DSNZPARM 參數(shù)為 WLMENV,用來(lái)指定在定義存儲(chǔ)過(guò)程時(shí),如果沒(méi)有指定 WLM_ENVIRONMENT 的值時(shí),系統(tǒng)會(huì)自動(dòng)分配的 WLM 應(yīng)用環(huán)境的名字。
◆MAX OPEN CURSORS
對(duì)應(yīng)的 DSNZPARM 參數(shù)是 MAX_NUM_CUR,用來(lái)指定每一個(gè) DB2 應(yīng)用 thread 最大可以打開(kāi)的 cursors 數(shù)量
◆MAX STORED PROCS
對(duì)應(yīng)的 DSNZPARM 參數(shù)是 MAX_ST_PROC。用來(lái)設(shè)定 DB2 應(yīng)用 thread 可以調(diào)用的最大存儲(chǔ)過(guò)程數(shù)量。在每一次 COMMIT 后,重新開(kāi)始記數(shù)。
主機(jī) WLM 應(yīng)用環(huán)境的規(guī)劃和實(shí)施
DB2 9 之后,所有的存儲(chǔ)過(guò)程都運(yùn)行在 WLM 應(yīng)用環(huán)境管理之下,由于主機(jī)數(shù)據(jù)庫(kù)下存儲(chǔ)過(guò)程數(shù)量較多,我們?cè)诙ㄖ频臅r(shí)候,需要把具有類似屬性的存儲(chǔ)過(guò)程定義在一個(gè)應(yīng)用環(huán)境下。目的是最大限度的減少 WLM 應(yīng)用環(huán)境的定義數(shù)量。當(dāng)然如果你只是客戶化少量的存儲(chǔ)過(guò)程或者是對(duì)某些存儲(chǔ)過(guò)程有一些特定的要求,例如性能或存儲(chǔ)等,也可以定義粒度更小的 WLM 應(yīng)用環(huán)境。另外在一些存儲(chǔ)過(guò)程里所涉及的數(shù)據(jù)集里,有一些是需要具有 APF 屬性的,需要特別注意。以下為一個(gè) WLM 應(yīng)用環(huán)境的定義例子,例子中應(yīng)用環(huán)境所對(duì)應(yīng)的啟動(dòng)作業(yè)為 DB11WLM1。
清單 2. 主機(jī) WLM 應(yīng)用環(huán)境定義界面
Appl Environment Name . . DB11WLM1
Description . . . . . . . DB2 DB11WLM1
Subsystem type . . . . . DB2
Procedure name . . . . . DB11WLM1
Start parameters . . . . DB2SSN=&IWMSSNM,NUMTCB=1,APPLENV=DB11WLM1
創(chuàng)建 DB2 存儲(chǔ)過(guò)程
DB2 產(chǎn)品提供的存儲(chǔ)過(guò)程是通過(guò)客戶化 DSNTIJSG 作業(yè)來(lái)定義的。在提交作業(yè)完成創(chuàng)建存儲(chǔ)過(guò)程之前,需要對(duì)存儲(chǔ)過(guò)程進(jìn)行必要的規(guī)劃。根據(jù)存儲(chǔ)過(guò)程的功能不同,建議分為以下 4 類:
表 1. 存儲(chǔ)過(guò)程的分類
另外,需要注意以下幾點(diǎn):
1.存儲(chǔ)過(guò)程的分類可能會(huì)依據(jù) DB2 的 PTF 版本不同而有改變;
2.存儲(chǔ)過(guò)程的 NUMTCB 的設(shè)置除了根據(jù)存儲(chǔ)過(guò)程的功能要求外,還依賴于系統(tǒng)資源情況;
3.建議 WLM 應(yīng)用環(huán)境和啟動(dòng)過(guò)程名稱一致,便于管理;
4.存儲(chǔ)過(guò)程分類的粒度根據(jù)實(shí)際情況可能會(huì)有不同,基本原則為在滿足功能需求的情況下,盡可能的簡(jiǎn)化配置,便于管理。
以下我們重點(diǎn)介紹為四個(gè)不同的 WLM 應(yīng)用環(huán)境準(zhǔn)備的啟動(dòng)作業(yè)過(guò)程,通過(guò)啟動(dòng)作業(yè)可以為 WLM 環(huán)境準(zhǔn)備不同的存儲(chǔ)過(guò)程執(zhí)行環(huán)境。
為在線 Utility 執(zhí)行而準(zhǔn)備的存儲(chǔ)過(guò)程
此類存儲(chǔ)過(guò)程功能是需要調(diào)用數(shù)據(jù)庫(kù)的在線 UTILITY,例如數(shù)據(jù)庫(kù)所提供的 DSNUTILS 和 DSNUTILU,在配置此類存儲(chǔ)過(guò)程的時(shí)候,NUMTCB 要求定義為 1,也就是不容許并發(fā)調(diào)用。主要是由于在調(diào)用時(shí),會(huì)生成一些中間文件,如果容許同時(shí)調(diào)用存儲(chǔ)過(guò)程的話,這些文件會(huì)被互相覆蓋,導(dǎo)致不可預(yù)料的錯(cuò)誤發(fā)生。
以下為此類存儲(chǔ)過(guò)程所調(diào)用的啟動(dòng)作業(yè)。在作業(yè)中的 SYSIN 是分配一些臨時(shí)空間存儲(chǔ) Utility 的輸入語(yǔ)句。SYSPRINT 是分配臨時(shí)空間來(lái)存儲(chǔ) utility 的輸出信息。RNPRIN01 是為 DFSORT 信息所分配的空間,UTPRINT 也是為 DFSORT 信息所分配的空間,DSSPRINT 是當(dāng)執(zhí)行 concurrent copies 時(shí),為輸出信息分配空間。
清單 3. 在線 Utility 存儲(chǔ)過(guò)程對(duì)應(yīng)的 STC 作業(yè)
//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)
為通用情況準(zhǔn)備的存儲(chǔ)過(guò)程
另外,我們?yōu)榇蠖鄶?shù)的存儲(chǔ)過(guò)程準(zhǔn)備了一套運(yùn)行環(huán)境,所準(zhǔn)備的啟動(dòng)作業(yè)如下所示,其中 NUMTCB 可以根據(jù)系統(tǒng)資源情況來(lái)定,一般推薦可以設(shè)置為 40 或 60。
清單 4. 通用情況下存儲(chǔ)過(guò)程對(duì)應(yīng)的 STC 作業(yè)
//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 語(yǔ)言編寫的存儲(chǔ)過(guò)程
對(duì)于由 REXX 語(yǔ)言寫的存儲(chǔ)過(guò)程來(lái)說(shuō),啟動(dòng)作業(yè)同其他類型的存儲(chǔ)過(guò)程是不同的。見(jiàn)下面的例子。需要特別提出的是,REXX 類型的存儲(chǔ)過(guò)程的 NUMTCB 應(yīng)該設(shè)為 1。
清單5. REXX 存儲(chǔ)過(guò)程對(duì)應(yīng)的STC作業(yè)
//DB11WLMR PROC APPLENV=DB11WLM_REXX,DB2SSN=DSN,RGN=0K,NUMTCB=1
//IEFPROC EXEC PGM=DSNX9WLM,REGION=&RGN,TIME=NOLIMIT,
// DYNAMNBR=5, <== Allow for Dyn Allocs
// PARM='&DB2SSN,1,&APPLENV' <== Use 1, not NUMTCB
//*
//NUMTCB@1 SET NUMTCB= <== Null NUMTCB symbol
//*
//* Include SDSNEXIT to use Secondary Authids (DSN3@ATH DSN3@SGN exits)
//STEPLIB DD DISP=SHR,DSN=prefix.RUNLIB.LOAD
// DD DISP=SHR,DSN=CBC!!.SCCNCMP <== C Compiler
// DD DISP=SHR,DSN=prefix.SCEERUN <== LE runtime
// DD DISP=SHR,DSN=prefix.SDSNEXIT
// DD DISP=SHR,DSN=prefix.SDSNLOAD
//SYSEXEC DD DISP=SHR,DSN=DSN!!0.SDSNCLST <== Location of DSNTPSMP
//SYSTSPRT DD SYSOUT=*
//CEEDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSABEND DD DUMMY
//DSNTRACE DD SYSOUT=*
//*
//**** Data sets required by the SQL Procedures Processor
//SQLDBRM DD DISP=SHR, <== DBRM Library
// DSN=DSN!!0.DBRMLIB.DATA
//SQLCSRC DD DISP=SHR, <== Generated C Source
// DSN=DSN!!0.SRCLIB.DATA
//SQLLMOD DD DISP=SHR, <== Application Loadlib
// DSN=DSN!!0.RUNLIB.LOAD
//SQLLIBC DD DISP=SHR, <== C header files
// DSN=CEE!!.SCEEH.H
// DD DISP=SHR,
// DSN=CEE!!.SCEEH.SYS.H
// DD DISP=SHR, <== Debug header file
// DSN=DSN!!0.SDSNC.H
//SQLLIBL DD DISP=SHR, <== Linkedit includes
// DSN=CEE!!.SCEELKED
// DD DISP=SHR,
// DSN=DSN!!0.SDSNLOAD
//SYSMSGS DD DISP=SHR, <== Prelinker msg file
// DSN=CEE!!.SCEEMSGP(EDCPMSGE)
//*
//**** DSNTPSMP Configuration File - CFGTPSMP (optional)
//* A site provided sequential dataset or member, used to
//* define customized operation of DSNTPSMP in this APPLENV.
//*CFGTPSMP DD DISP=SHR,DSN=
//*
//**** Workfiles required by the SQL Procedures Processor
//SQLSRC DD UNIT=SYSALLDA,SPACE=(23440,(20,20)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=23440)
//SQLPRINT DD UNIT=SYSALLDA,SPACE=(23476,(20,20)),
// DCB=(RECFM=VB,LRECL=137,BLKSIZE=23476)
//SQLTERM DD UNIT=SYSALLDA,SPACE=(23476,(20,20)),
// DCB=(RECFM=VB,LRECL=137,BLKSIZE=23476)
//SQLOUT DD UNIT=SYSALLDA,SPACE=(23476,(20,20)),
// DCB=(RECFM=VB,LRECL=137,BLKSIZE=23476)
//SQLCPRT DD UNIT=SYSALLDA,SPACE=(23476,(20,20)),
// DCB=(RECFM=VB,LRECL=137,BLKSIZE=23476)
//SQLUT1 DD UNIT=SYSALLDA,SPACE=(23440,(20,20)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=23440)
//SQLUT2 DD UNIT=SYSALLDA,SPACE=(23440,(20,20)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=23440)
//SQLCIN DD UNIT=SYSALLDA,SPACE=(32000,(20,20))
//SQLLIN DD UNIT=SYSALLDA,SPACE=(3200,(30,30)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SQLDUMMY DD DUMMY
//SYSMOD DD UNIT=SYSALLDA,SPACE=(23440,(20,20)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=23440)
JAVA 語(yǔ)言應(yīng)用準(zhǔn)備的存儲(chǔ)過(guò)程
對(duì)與 JAVA 語(yǔ)言編寫的存儲(chǔ)過(guò)程,由于主機(jī)上的 JAVA 是運(yùn)行在 USS 下,所以需要指定指定 JAVA 運(yùn)行環(huán)境,見(jiàn)啟動(dòng)過(guò)程中的 JAVAENV 所指定的數(shù)據(jù)集。
清單6. JAVA 存儲(chǔ)過(guò)程對(duì)應(yīng)的STC作業(yè)
//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',
// PATHOPTS=(ORDWR,OCREAT,OAPPEND),
// PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP,SIROTH,SIWOTH)
//JAVAERR DD PATH='/V1R7/USR/db2a10/JAVAERR.TXT',
// PATHOPTS=(ORDWR,OCREAT,OAPPEND),
// PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP,SIROTH,SIWOTH)
其中 JAVAENV 指定 JAVA 運(yùn)行環(huán)境定義,JAVAENV 文件的內(nèi)容,舉一例子做參考:
清單7. JAVAENV 配置文件信息
ENVAR('_CEE_ENVFILE=/u/db2tdbg/nolimit.txt',
'JAVA_HOME=/u/java/J1.4'),
MSGFILE(JSPDEBUG,,,,ENQ),
XPLINK(ON)
其中 nolimit.txt 的配置信息如下:
清單8. JAVAENV 配置文件中 nolimit.內(nèi)容信息
LIBPATH=/griv2r2/lib:/usr/lpp/db2810/lib
CLASSPATH=/egfv1r1/egfsproc.jar:/usr/lpp/db2810/classes/db2j2classes.zip
:/u/java/J1.4/lib/charsets.jar
DB2_HOME=/usr/lpp/db2810/
WORK_DIR=/u/db2tdbg
TMSUFFIX=/griv2r2/griserver.jar:/griv2r2/griobjects.jar
:/griv2r2/xercesImpl.jar:/griv2r2/xmlapis.jar
:/griv2r2/grinls.jar:/griv2r2/griuf.jar:/griv2r2/bicompare.jar
PATH=/u/java/J1.4/bin
DB2SQLJPROPERTIES=/u/db2tdbg/db2sqljjdbc.properties
STEPLIB=SYS1.DSN810.PE01.SDSNEXIT:DSN810.SDSNLOAD:DSN810.SDSNLOD2
JAVA_HOME=/u/java/J1.4
其中 /u/db2tdbg/db2sqljjdbc.properties 的配置信息為:
清單9.JAVAENV 配置文件 db2sqljjdbc.properties 配置信息
DB2SQLJSSID=PE11
DB2SQLJPLANNAME=DSNJDBC
DB2SQLJ_TRACE_FILENAME=/tmp/javatrc.db2tdbg
DB2CURSORHOLD=YES
DB2SQLJMULTICONTEXT=YES
DB2SQLJATTACHTYPE=RRSAF
DB2SQLJDBRMLIB=DSNPE01.V8.DBRMLIB.DATA
DB2CURSORHOLD=YES
db2.connpool.max.size=100
db2.jdbc.profile.pathname=/usr/lpp/db2810/classes/DSNJDBC_JDBCProfile.ser
最后,用戶可以通過(guò)配置客戶端來(lái)連接 DB2 子系統(tǒng)使用存儲(chǔ)過(guò)程提供的功能,在連接前,需要保證在服務(wù)器端 DDF(Distributed Data Facility)已經(jīng)配置并正常啟動(dòng)。
在DB2命令窗口里輸入以下命令:
清單10. DB2 分布式連接配置命令
db2 catalog tcpip node remote server
db2 catalog dcs database as
db2 catalog database as
at node authentication DCS
以上信息可以通過(guò)在 MVS console 輸入以下命令–DISPLAY DDF 命令來(lái)確定 DB2 子系統(tǒng)的 DB2 location,IP 地址和 TCP 端口號(hào)等連接信息。在正確配置好客戶端后,我們可以通過(guò)以下命令來(lái)連接 DB2 子系統(tǒng):
清單11. DB2分布式連接命令
db2 connect to user using
