您现在的位置是:首页 > 博文答疑 > 关于CICS和DB2连接的问题博文答疑

关于CICS和DB2连接的问题

Leo2016-08-22【3】

简介关于CICS和DB2连接的问题

本文从原来博客copy过来的。http://blog.163.com/wanglei_leo/blog/static/7488095420088102519864/



关于CICS和DB2连接的问题


本文是对CICS Transaction Server和DB2连接的简单介绍,描述了在CICS的环境中如何配置和DB2的连接、线程如何工作以及CICS DB2连接的定义等。


一.CICS和DB2的连接


在CICS 中提供了一个和DB2连接的附加工具,在CICS的环境中,CICS的应用可以访问DB2的数据。因此,CICS即可以访问DB2中的数据,也可以访问CICS中的数据,当系统或者交易失败时,CICS来保证数据的一致性。此附加工具在CICS和DB2之间建立连接,CICS的应用使用这个连接对DB2发出命令请求。可以指定一个DB2的子系统进行连接,也可以指定一个DB2的成员。一个DB2的子系统可以被多个CICS同时连接,但是,一个CICS在一个时刻只能连接到一个DB2子系统。这个连接是多线程的,对于CICS中的连接到DB2的每个交易,都使用独立的线程。


CICS提供一个交易DSNC,工具通过DSNC可以显示和控制CICS和DB2连接的状态,DSNC提供以下的命令:


STRT:启动连接


STOP:停止连接


DISP:显示线程的状态和数据


MODI:修改连接的属性


DISC:切断线程的连接


二.DB2的地址空间


DB2子系统需要一些不同的地址空间,不同的任务在不同的地址空间中执行。


DSN1MSTR:系统服务的地址空间


DSN1DBM1:数据库的服务的地址空间。维护用户的数据结构


DSN1DIST:为分布的数据提供远程的访问


IRLMPROC:资源锁管理器


DSN1SPAS:存储过程的执行的地址空间


如下图:


三.线程的使用


在CICS和DB2的连接中,提供了以下3种类型的线程。


1. Command:使用DSNC的交易,向DB2发出命令使用此类的线程。当命令线程不可用时,会自动使用一个pool的线程。


2. Entry:为特定的交易指定使用的线程类型。


3. Pool:其他所有的交易使用的线程类型。


每个线程都是运行在CICS中的一个线程的TCB(task control block)下。CICS和DB2都有connection control blocks连接到线程的TCB,通过这些connection control blocks来交换信息。在CICS中的connection control block被称作CSUB,用来指向DB2中的connection control block。在版本6以上的DB2使用的connection control blocks,如下图:


在第1种情况下,CICS可以访问DB2。在一个TCB下,有CSUB和connection control block,并且通过一个thread连接到DB2,相应的Plan在DB2中执行。


在第2种情况下,没有TCB ,CICS和DB2的连接没有使用,但是thread被保留,以便下次使用。


在第3种情况下,是Thread被中断的情况,CSUB和connection control block被保留,以便下次使用。需要申请新的线程。


在第4种情况下,是可用的TCB。


四.CICS DB2连接的定义


可用使用RDO来定义CICS DB2的连接,有以下的3种类型:


1. DB2CONN


是CICS DB2的最主要的连接。在启动CICS DB2的连接之前,需要install一个DB2CONN(并且同时只能install一个)。


DB2CONN需要定义的属性:


CICS DB2连接的基本属性(例如,连接的DB2子系统的名称或者组名, TCB同时并发的最大数,保留的线程最长时间等)


Command的线程属性(例如,Command的线程同时并发的最大数,DB2授权的类型等等)


Pool的线程属性(例如,Pool的线程同时并发的最大数,DB2授权的类型,Plan的名称等等)


2. DB2ENTRY


在CICS中,可以指定一些特殊的交易使用DB2ENTRY。实际上,是为一些特殊的交易,保留了一定数量的线程,是它们能够更快速的连接DB2。可以同时定义并install 多个DB2ENTRY类型的连接,每个连接为不同的交易使用。


DB2ENTRY需要定义的属性:


交易名称(可以使用通配符)


Entry的线程属性(例如,线程同时并发的最大数,DB2授权的类型,不使用时保留的线程数,Plan的名称等等)


3. DB2TRAN


在CICS中,添加一些交易使用某个DB2ENTRY,定义一个DB2TRAN就可以了。DB2ENTRY需要定义的属性:相关的DB2ENTRY名称,交易名称(可以使用通配符)。这样,这个交易连接DB2的时候,就会使用此DB2ENTRY。