CICS和DB2的连接

来源:互联网 发布:有支付宝怎么注册淘宝 编辑:程序博客网 时间:2024/05/21 10:34

本文是对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成员。一个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都有connectioncontrol blocks连接到线程的TCB,通过这些connection controlblocks来交换信息。在CICS中的connection control block被称作CSUB,用来指向DB2中的connectioncontrol 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。

注:文章出自IBM中国

原创粉丝点击