41

百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

  • Upload
    buikhue

  • View
    297

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1
Page 2: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

1

Page 3: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

本期特写 Cover Profile

—— 百硕同兴拓展海外服务市场

受菲律宾 IT Associates Corporation/E-Commerce Philippines, Inc.(简称 ITAC)公司的委托,我们于 5 月 5 日

在京成功地举办了为期一周的 Sterling Commerce 公司产品的技术培训班。参加培训的学员有五位来自菲

律宾,其中四位是 Allied Bank 的工程师,还有一位是 ITAC 的技术支持人员。此次培训收到了良好的效

果与反馈,同时也为我们与 Allied Bank 的合作打下了良好基础。

Sterling Commerce 公司的 CD(Connect:Direct)是一种领先的点对点文件传输工具,综合了业界的多种

文件传输标准,经过了特别优化,可以保证安全、可靠的大容量数据交换,将包含各种类型数据的文件

在多个平台间,或在完全不同的文件系统之间进行传输。该产品完善的大容量确保了在企业内部及在企

业之间进行商业关键应用时的数据传输。在需求日益增长的金融服务业,以及每天传输大量商业信息的

电信行业,Connect:Direct 软件都是最受信任的解决方案。对于关键文件的传输来说,Connect:Direct 软件更是集可视性、安全性及可靠性于一体,它具有高度的自动化功能,是用于文件传输的可靠平台。

全球许多大型银行都采用 Sterling Commerce 的 CD 来实现数据的传输。汇丰银行、花旗银行、苏格兰皇

家银行、美洲银行、渣打银行以及 VISA 和 MASTER 等都是 Sterling Commerce 文件传输产品 CD 的客

户。作为推广和提供专业服务的产品之一,我们正努力在国内外拓展该产品的服务业务。

目前 Allied Bank 已邀请我公司的工程师前往菲律宾提供现场技术支持与服务。此次与 Allied Bank 的合

作标志着我们在东南亚地区拓展服务业务的开始。

致力于主机服务领域的百硕同兴咨询服务公司,始终坚持“以客户为中心”的服务理念,为国内外主机

用户提供高品质的主机系统和应用技术服务,竭力将“做客户最有价值的合作伙伴”这一宗旨落到实

处,为客户提供切实、可靠的技术服务与系统安全运维保障。

2

Page 4: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

System z 上的 z/VM 与 LINUX 简介

近来有一种令人振奋的趋势,就是把新的或现有的

应用移植到 IBM 主机上。IBM 通过让用户具备在主

机(z 系列)的虚拟操作系统(z/VM)上运行

Linux 的能力,从而使应用程序的移植变得更为便

利。

z/VM 支持全球领先的开放源代码操作系统 — Linux。在主机的 VM 环境下,Linux 受益于硬件和

软件资源共享以及使用内部高速通讯的能力。在得

益于 IBM System z 服务器高可靠性的同时,z/VM V5.3 为在单台机物理服务器上整合 UNIX 、

Windows 和 Linux 工作负载提供了理想的平台,甚

至可以实现在一台主机上运行成百上千个 Linux。

Linux 在 IT 领域由引起注意的学院练习不断发展成

为一个广受企业应用欢迎的平台。这种发展改变了

企业考虑其计算模式的方法。运行在 IBM System z服务器上的 Linux 可以利用 IBM 主机和 z/VM 的突

出能力,为简化设施和知识更新提供帮助。

System z 上的 Linux 结合了 z/VM 管理程序和 IBM主机,受益于更强大的可用性、可扩展性、虚拟

性、安全性以及可靠性,可解决很多大型企业所面

临的需简化基础设施的问题。

配备 z/VM 的 System z 环境具备灵活与管理特性,

这使得满足随需应变的要求成为可能,因为在

z/VM 中,几分钟之内您就可以配置一台全新的

Linux 服务器。

利用一台 IBM 主机就可以应付维护大量分布式服务

器的复杂性,同时对占地空间的要求更少,从而节

省了相关费用。

使用 HiperSockets 简化网络可以节约并减少网线、

Hub、交换器和路由器的使用,而且可以减少在维

护方面的投入。很多公司的企业级重要数据和应用

都交由 System z 环境来处理。

使用 System z 上的 Linux 可以实现 Linux 应用与其

它 System z 应用之间通讯,而且可以访问存放在 z系列服务器上的重要数据,从而增强您现有应用和

数据的价值。这有助于提高响应时效,减少不必要

的数据复制。

根据 Linux 的可移植性,能够简捷快速地将应用移

植到 System z 服务器上。System z 平台的这种能力

可以为您的企业简化操作,为减少整合大量服务器

的成本提供了理想的平台。

z/VM 的先进技术可帮助达到如此效果:在 System z服务器上创建由 z/VM 管理的多个 Linux 系统,它

们可以共享物理资源、程序、数据和内部高速通

讯。

z/VM V5 支持 IFL(Integrated Facility for Linux)处

理器,它价格低廉,但仅用于在 System z 上运行

Linux。System z 上的 Linux 支持 System z 平台上的

IBM z/Architecture® (64 位)。

IBM 已经开始了一个庞大的 IT 整合改革项目

(Major IT Consolidation Transformation Project)。

计划把 3900 台计算机服务器整合到运行 Linux 操作

系统的 30 台 System z 主机上。IBM 预计新的服务

器环境将比现有设施的能源消耗低 80%左右。IBM还期望五年内可以节省大量的能源、软件及系统支

持成本。

IBM 推出了减少数据中心能源消耗的承诺,即绿色

创新工程(Project Big Green)。z/VM 是这项承诺

的一部分。由于节约能源对中国来说非常重要,所

以服务器整合将成为引人注目的焦点。

在很多网站可以获取关于 System z 上 Linux 的信

息,如:

http://linuxvm.org/penguinvm/index.html 链接到普林

斯顿大学Linux和VM

http://www.vm.ibm.com/linux/ IBM Linux VM网站

http://linuxvm.org/ 关于Linux 390 项目的网站

http://linuxvm.org/redbooks.html 关于Linux 390 的

IBM红皮书网站

此外,还有描写 IBM Transformation — Major IT Consolidation Initiative 的优秀 PDF 文档。这份 PDF文档是 2008 年 2 月份在佛罗里达州奥兰多市举行的

Share User Group 会议上发布的。

如果您感兴趣,我们还可以为您提供更多的资料。

我们与某些美国客户保持着密切联系。这些客户在

System z 大型主机的 VM 环境运行 Linux 应用方面

具有丰富经验。

3

Page 5: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

Named Counter 的 定义与使用

百硕资深工程师 徐卫华

1、 Named Counter 概述

在 Single CICS 环境中,应用程序可以利用 CWA(Common Work Area)的某些位作为应用程序的计数器。如

利用 CWA 的某些位作为 RRDS 的 SLOT Number,或者作为某类业务的流水号。但是在 CICSPLEX 环

境中,就不能使用某个 CICS 的 CWA 的值。CICSPLEX 提供了 Named Counter,它可以为 CICSPLEX全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1”,以达到序列号唯一的

目的。

每个 Named Counter 都有以下四要素:

16 个字节的 Named Counter 名 Named Counter 的当前值 Named Counter 的最小值 Named Counter 的最大值

Named Counter 的最大值是8个字节的十六进制数‘FFFFFFFF FFFFFFFF’。一般情况下,用户只使用4

个字节,即‘FFFFFFFF’,对应的十进制数为 4294967295,就可以满足需求。用户可以通过 GET COUNTER(Name of counter 4 bytes)命令取出 Counter 的当前值。最大值是4个字节‘FFFFFFFF’,如

果某个 Counter 是8个字节,那么取出这个 Counter 值的命令是 GET DCOUNTER(Name of counter 8 bytes)。 Named Counters 存在于 Named Counter Pool 中,每一个 Pool 都是 CF 中的一个小的 List Structure,它只

有 Key,没有 Data。Named Counter 的名字是 List Structure 名字的一部分。如 List Structure 的名字为

DFHNCLS_DFHNC01,Named Counter 的名字就是 DFHNC01。DFHNCLS 是 Pool 名的前 。一般来

说,一个 MVS Image 中只需要建立一个 Named Counter 的服务,即只启动一个 Named Counter 的

Address Space,因为用户可以在一个 Named Counter 中定义多个 Counter。除非是某个 Named Counter为生产系统使用,而另一个 Named Counter 作为测试用。 下图是 Named Counter 的结构图示意图:

4 4

Page 6: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

2、 Named Counter 的定义及启动 2.1 定义 List Structure

Named Counter 的 Pool 存放在 List Structure 中,所以在启动 Named Counter 的 Service 之前,要先在

XCF 中定义 Named Counter 的 List Structure。List Structure 是与 Named Counter 的 Pool 一一对应的。下

面是定义 List Structure 的 JCL 示例: //DEFNC01 EXEC PGM=IXCMIAPU

//SYSPRINT DD SYSOUT=A

//SYSABEND DD SYSOUT=A

//SYSIN DD *

DATA TYPE(CFRM) REPORT(YES)

DEFINE POLICY NAME(CFRMPOL2) REPLACE(YES)

STRUCTURE NAME(DFHNCLS_DFHNC01)

SIZE(512)

INITSIZE(256)

PREFLIST(FACIL01,FACIL02)

/*

需要注意的是,定义 List Structure 的 CFRM Policy 语句不会真正创建 List Structure。当第一个 Named Counter 服务被启用时(Named Counter 的 Address Space 被激活时),Named Counter 会发 Connect 请求

到 CF,这时才会真正建立该 Named Counter 的 List Structure。

启动 Named Counter 还有一个前提,那就是一定要启动 AXM(Authorized Cross Memory)。

下面是启动 Named Counter Service 的 JCL 示例: //CINCS01 PROC

//*

//DFHNCS EXEC PGM=DFHNCMN,REGION=0M,TIME=NOLIMIT

//STEPLIB DD DSN=CICSTS31.CICS.SDFHAUTH,DISP=SHR

//SYSPRINT DD SYSOUT=*

//SYSIN DD *

POOLNAME=DFHNC01,STATSOPT=BOTH

/*

该 Named Counter 的 Pool 为 DFHNC01,STATOPT=BOTH 指定 Named Counter 的统计信息,将被写到

SYSPRINT 和 RMF 数据中。 2.2 Named Counter 使用的内存

Named Counter 启动后,会在 16M 线上申请小于 1M 的内存,在 16M 线下申请小于 20K 的内存。在

Named Counter Server 启动后,由 AXM 的 Page Allocation Services来管理所申请的内存。所以,如果出

现内存不足,可能会导致 AXM 终止对 Named Counter 的服务。为了避免这种情况的发生,最好设置

Region size 足够大。

Named Counter 启动后,如果在 CICS 中引用 Named Counter 的值,要在 CICS 的 SIP 中增加:

NCPLDFT=DFHNC01。这里的 DFHNC01 就是启动 Named Counter 的 Procedure 中指定的 Pool 名。

3、 Named Counter 常用命令

Named Counter 常用的命令分为三类:

查看类(Display 和 Print)、修改类(Set)和启停类(Stop、Cancel): SET keyword=operand[,keyword=operand,...]

DISPLAY keyword[=operand][,keyword[=operand,]...]

PRINT keyword[=operand][,keyword[=operand,]...]

STOP

CANCEL {RESTART={NO|YES}}

5 5

Page 7: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

3.1 常用的查看命令

查看命令分为 Display 和 Print,它们的命令格式相同,只是结果的输出不同。Display 将结果输出到

LOG 中,用户可以通过 SD.ULOG 查找输出。Display 也是最常用的命令,我们以 Display 命令进行说

明,常用的 Display 有以下几种: D CONNECTIONS D STATISTICS D INITIALIZED D ALLPARMS D COUNTERS D COUNTER=named_counter_name

下面分别列出 Display 命令的输出: -F CICSNC01,D CONNECTIONS DFHNC0351I Connection: Job CICSAOR1 Applid CICSAOR1 Idle 00:02:05

DFHNC0351I Connection: Job CICSAOR2 Applid CICSAOR2 Idle 00:07:00

DFHNC0351I Connection: Job CICSAOR3 Applid CICSAOR3 Idle 00:10:08

DFHNC0351I Connection: Job CICSAOR4 Applid CICSAOR4 Idle 00:04:37

DFHNC0352I Total connections to this server: 4.

显示当前 CICSNC01 相连的 CICS 列表,以及各个 CICS 处于 IDLE 的时间。 -F CICSNC01,D statistics DFHNC0431I Access statistics for CF structure DFHNCLS_DFHNC01:

Requests: Create Get Set Delete Inquire Browse

0 18 0 0 0 0

Responses: Asynch Unavail

0 0

Normal Not fnd Vers chk List chk Str Full I/O err

18 0 0 0 0 0

DFHNC0432I Pool statistics for CF structure DFHNCLS_DFHNC01:

Structure: Size Max size

256K 512K

Entries: Total In use Max used Free Min free

319 5 5 314 314

100% 2% 2% 98% 98%

AXMPG0004I Usage statistics for storage page pool AXMPGANY:

Size In Use Max Used Free Min Free

1227280K 608K 640K 1226672K 1226640K

100% 0% 0% 100% 100%

Gets Frees Retries Fails

18 19 0 0

AXMPG0004I Usage statistics for storage page pool AXMPGLOW:

Size In Use Max Used Free Min Free

496K 12K 12K 484K 484K

100% 2% 2% 98% 98%

Gets Frees Retries Fails

0 0 0 0

D statistics 命令列出 CF Structure 访问、Pool 以及内存使用情况等三部分的统计信息,内存的使用情况

还分为 16M 线上的统计和 16M 线下的统计。 -F CICSNC01,D INITIALIZED DFHNC0211I Parameter value: POOLNAME=DFHNC01

DFHNC0211I Parameter value: STATSOPTIONS=BOTH

DFHNC0211I Parameter value: ENDOFDAY=00:00

DFHNC0211I Parameter value: STATSINTERVAL=03:00

DFHNC0211I Parameter value: POOLSIZE=256K

DFHNC0432I Pool statistics for CF structure DFHNCLS_DFHNC01:

Structure: Size Max size

256K 512K

6 6

Page 8: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

Entries: Total In use Max used Free Min free

319 5 5 314 314

100% 2% 2% 98% 98%

AXMPG0004I Usage statistics for storage page pool AXMPGANY:

Size In Use Max Used Free Min Free

1227280K 608K 640K 1226672K 1226640K

100% 0% 0% 100% 100%

Gets Frees Retries Fails

18 19 0 0

AXMPG0004I Usage statistics for storage page pool AXMPGLOW:

Size In Use Max Used Free Min Free

496K 12K 12K 484K 484K

100% 2% 2% 98% 98%

Gets Frees Retries Fails

0 0 0 0

D INITIALIZED 命令列出 Name Counter 在初始化时的参数值。 F CICSNC01,D ALLPARMS DFHNC0211I Parameter value: POOLNAME=DFHNC01

DFHNC0211I Parameter value: STATSOPTIONS=BOTH

DFHNC0211I Parameter value: ENDOFDAY=00:00

DFHNC0211I Parameter value: STATSINTERVAL=03:00

DFHNC0211I Parameter value: ARMELEMENTNAME=DFHNC01_DFHNC01

DFHNC0211I Parameter value: ARMELEMENTTYPE=SYSCICSS

DFHNC0211I Parameter value: POOLSIZE=256K

DFHNC0211I Parameter value: CFTRACE=OFF

DFHNC0211I Parameter value: RQTRACE=OFF

DFHNC0211I Parameter value: ENTRYWARN=80

DFHNC0211I Parameter value: ENTRYWARNINC=5

DFHNC0303I DISPLAY command has been processed.

D ALLPARMS 列出 Named Counter 使用的所有的参数值。 f CINCS01,D COUNTERS

DFHNC0361I Counter names: AACNTER BBCNTER

DFHNC0361I Counter names: CCCNTER DDCNTER

DFHNC0361I Counter names: EECNTER

DFHNC0362I The total number of named counters in the pool is 5.

D COUNTER 可以查看当前 Named Counter 的 Pool 里有多少个正在使用的 Counter。 F CINCS01,D COUNTER=CCCNTER

I Details for named counter CCCNTER:

Current value Minimum value Maximum value

16172 1 99999999

Options: NOWRAP NOREDUCE

可以使用 D COUNTER=Named_Counter_Name 来查看某个 Counter 的当前值、最小值和最大值。

CCCNTER 的当前值是 16172,最小值是 1,最大值是 99999999。 3.2 常用的修改命令

使用 Named Counter 提供的 SET 命令进行相关参数的修改,常用的有以下几种: SET STATSOPT=BOTH,EOD=21:00,STATSINT=06:00

该命令的作用是设置 STATISTICS 数据收集到 SMF 和 PRINT FILE 中。End Of Day 的时间点设置为

21:00,收集数据的时间间隔为 6 个小时收集一次。 SET TRACECF=ON/OFF

该命令打开或关闭 CF 的 DEBUG TRACE,在执行完成后,会将 TRACE 信息写入 Named Counter Address Space 的 SYSPRINT 中。如下面就是从一个 SYSPRINT 的输出内容: 10.13.05.27 DFHNC0941I R12=30A33010 CF Entry GET Name=BBCNTER R1=30A33248

10.13.05.27 DFHNC0942I R12=30A33010 CF IXLLIST REQUEST=READ REASON=00000000

7 7

Page 9: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

10.13.05.27 DFHNC0943I R12=30A33010 CF IXLLIST ENTRYKEY=C2C2C3D5 E3C5D940 40404040 40404040 BBCNTER

10.13.05.27 DFHNC0943I R12=30A33010 CF IXLLIST VERSION=FFFFFFFF FF6774D0

10.13.05.27 DFHNC0943I R12=30A33010 CF IXLLIST ADJAREA=00000000 00000001 00000000 0098967F 00000000

10.13.05.27 DFHNC0944I R12=30A33010 CF Exit OK Name=BBCNTER

10.13.07.64 DFHNC0941I R12=30A33010 CF Entry GET Name=BBCNTER R1=30A33248

10.13.07.64 DFHNC0942I R12=30A33010 CF IXLLIST REQUEST=READ REASON=00000000

10.13.07.64 DFHNC0943I R12=30A33010 CF IXLLIST ENTRYKEY=C2C2C3D5 E3C5D940 40404040 40404040 BBCNTER

10.13.07.64 DFHNC0943I R12=30A33010 CF IXLLIST VERSION=FFFFFFFF FF6774D1

10.13.07.64 DFHNC0943I R12=30A33010 CF IXLLIST ADJAREA=00000000 00000001 00000000 0098967F 00000000

10.13.07.64 DFHNC0944I R12=30A33010 CF Exit OK Name=BBCNTER

10.13.21.00 DFHNC0941I R12=30A33010 CF Entry GET Name=BBCNTER R1=30A33248

10.13.21.00 DFHNC0942I R12=30A33010 CF IXLLIST REQUEST=READ REASON=00000000

10.13.21.00 DFHNC0943I R12=30A33010 CF IXLLIST ENTRYKEY=C2C2C3D5 E3C5D940 40404040 40404040 BBCNTER

10.13.21.00 DFHNC0943I R12=30A33010 CF IXLLIST VERSION=FFFFFFFF FF6774D2

10.13.21.00 DFHNC0943I R12=30A33010 CF IXLLIST ADJAREA=00000000 00000001 00000000 0098967F 00000000

10.13.21.00 DFHNC0944I R12=30A33010 CF Exit OK Name=BBCNTER

每一次对 Named Counter 的访问都会有一个 Entry 和一个 Exit。Entry 和 Exit 匹配出现。 上面的例子描述了对 BBCNTER 执行了 GET 操作。

在打开 Named Counter 的 Trace 后,可以通过下面的命令关掉 Trace: SET TRACECF=OFF

3.3 STOP 与 CANCEL 命令

在对系统进行维护时,可能需要停掉 Named Counter 或者重启 Named Counter Address Space,那么可以

使用下面的命令: F CINCS01,STOP 或者

F CINCS01,CANCEL,RESTART=NO

如果要停掉 Named Counter 然后重启,可以使用: F CINCS01,CANCEL,RESTART=YES

4、 Named Counter Pool 的清除与导入/导出 4.1 清空 Named Counter 的内容

可以使用下面的命令清除 CF 中的 List Structure,从而清空 Named Counter Pool。 SETXCF FORCE,STRUCTURE,STRNAME=DFHNCLS_poolname

如果在执行命令的过程中,还有其它的 Address Space 访问 Named Counter,那么 MVS 不会执行该命

令。如果一个 Named Counter 的 Pool 被清空后,该 Named Counter 服务重新被启动,那么就会在

CFRM 中建立一个新的 List Structure,它的属性会使用 CFRM Policy 的当前设置。 4.2 重置 Named Counter Pool 的大小

如果 Structure 的容量将要达到最大值,但是当前 Pool 的大小还没有达到最大值,我们可以使用

SETXCF START,ALTER 命令增加 Pool 的大小。 SETXCF START,ALTER,STRNAME=DFHNCLS_poolname,SIZE=size

Size 的单位是 Kilobytes。 4.3 Unload & Reload Named Counter Pools

在日常的维护中,可能遇到下面的某种情况:

1. CF 要做维护,需要备份、保留 Named Counter Pool 中的数据,以便 CF 维护后恢复使用;

2. 要将某个系统的 CF 数据 COPY 到其它系统。

Named Counter 为我们提供了 Unload 和 Reload 功能,它调用程序 DFHNCMN。Unload 功能将 Named Counter Pool 中的数据转储到一个长度为 4096 的顺序数据集中。而 Reload 功能是将顺序数据集中的数

据恢复到指定的 Named Counter Pool 中,下面是 Named Counter 的 Unload 和 Reload 作业流示例: //UNLDNCD1 JOB ...

//NCUNLOAD EXEC PGM=DFHNCMN CICS named counter

server program

//STEPLIB DD DSN=CICSTS31.CICS.SDFHAUTH,DISP=SHR Authorized libra

//SYSPRINT DD SYSOUT=*

Options, messages and statistics

8 8

Page 10: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

//DFHNCUL DD DSN=NC1.UNLOADED.POOL, Unloaded named counter pool

// DISP=(NEW,CATLG),

// SPACE=(4096,(10000,1000))

Estimated size in 4K blocks

//SYSIN DD *

FUNCTION=UNLOAD

Function to be performed is UNLOAD

POOLNAME=PRODNC1 Pool

name

/*

//RELDNCD1 JOB ...

//NCRELOAD EXEC PGM=DFHNCMN CICS named counter

server program

//STEPLIB DD DSN=CICSTS31.CICS.SDFHAUTH,DISP=SHR Authorized library

//SYSPRINT DD SYSOUT=*

Options, messages and statistics

//DFHNCRL DD DSN=NC1.UNLOADED.POOL,DISP=OLD Unloaded pool

//SYSIN DD *

FUNCTION=RELOAD

Function to be performed is RELOAD

POOLNAME=PRODNC1 Pool

name

/*

9 9

Page 11: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

CICS Monitoring Event Monitoring Point (EMP) Usage 百硕顾问 John Varendorff 1、 Introduction

This document briefly discusses the steps necessary to achieve the following: 1) Define User Data fields that will be added to the CICS Monitoring Performance Records. These fields are

defined by use of the DFHMCT TYPE=EMP Macros used to create a MCT (Monitoring Control Table) for CICS. The fields can be used by CICS Applications to write User data by use of Event Monitoring Points (EMPs).

2) Code appropriate EMPs in Application Code using the EXEC CICS MONITOR Command. When these commands are run, User Data can be saved in the User Data fields of CICS Monitoring Performance Records for later analysis.

3) Prepare the CICS Region to write CICS Monitoring Performance Records to SMF. This is achieved by use of three (3) System Initialization Parameters.

4) Listing the CICS Monitoring Performance Records using the DFH$MOLS Sample utility Program. 5) Alter the DFH$MOLS Sample Utility Program to allow it to Unload the User Data Fields when run in

Unload Mode. 6) Unload the CICS Monitoring Performance Records as separate fixed-length sequential records, each

describing one CICS Transaction. This ensures that later analysis of the data saved in the User Data fields of CICS Monitoring Performance Records is an easy as possible.

2、 Monitoring Control Table (MCT)

The Monitoring Control Table (MCT) defines the User Data fields in CICS Monitoring Performance Class records, and describes how they are to be manipulated at Event Monitoring Points (EMPs). 2.1 Defining MCT User Data Fields

The following Sample JCL would define two (2) User Data Fields to be included in the CICS Monitoring Performance Class SMF Records (Type 110 Subtype 1): //BAYSH03@ JOB ,CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID,REGION=0M

//*

//STEP00 EXEC ASMACL

//*

//C.SYSLIB DD

// DD DISP=SHR,DSN=CICSTS22.CICS.SDFHMAC

//C.SYSIN DD *

DFHMCT TYPE=INITIAL, *

SUFFIX=88, *

STARTER=YES

EJECT

*

DFHMCT TYPE=EMP, *

CLASS=PERFORM, *

ID=USERPROG.1, *

PERFORM=(MOVE(0,4))

*

DFHMCT TYPE=EMP, *

CLASS=PERFORM, *

10 10

Page 12: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

ID=USERPROG.2, *

PERFORM=(MOVE(4,4))

*

DFHMCT TYPE=EMP, *

CLASS=PERFORM, *

ID=USERDEPT.1, *

PERFORM=(MOVE(0,5))

*

DFHMCT TYPE=EMP, *

CLASS=PERFORM, *

ID=USERDEPT.2, *

PERFORM=(MOVE(5,13))

*

DFHMCT TYPE=FINAL

SPACE

/*

//L.SYSLMOD DD DISP=SHR,DSN=CICSTS22.CICS.SDFHLOAD(DFHMCT88)

The following are important notes regarding the creation of this MCT: • This JCL will create a Load Module DFHMCT88 in the CICSTS22.CICS.SDFHLOAD Load Library.

• This MCT will be selected by a corresponding MCT= System Initialization Parameter for the CICS Region.

• The Load Library needs to be concatenated in the DFHRPL DD for the DFHSIP Step of the CICS Region JCL Procedure.

• This Sample will create two (2) User Data fields in the CICS Monitoring Performance Records:

o USERPROG (8 Bytes in Length)

o USERDEPT (20 Bytes in Length)

• This MCT will allow the use of these two (2) User Data fields by four (4) Event Monitoring Points (EMP) defined in the Application using EXEC CICS MONITOR API Commands:

o USERPROG.1

o USERPROG.2

o USERDEPT.1

o USERDEPT.2

• The length of the User Data fields is determined by adding the Offset (first parameter of MOVE Option of the PERFORM Operand of the DFHMCT TYPE=EMP Macro) and Length (second parameter) for every defined EMP that is defined for use in the Application.

The length of the User Data field is the maximum value for all EMPs that are defined for that User Data field.

The User Data fields are allocated in multiples of 4 bytes.

• For example, User Data field USERDEPT is defined to be used by EMP USERDEPT.1 and EMP USERDEPT.2.

The lengths of the two (2) EMPs are 5 and 18. Therefore, the maximum length of the EMPs that will be written to the USERDEPT User Data field is 18.

But since the User Data fields are allocated in multiples of 4 Bytes, the USERDEPT User Data field length in the CICS Monitoring Performance Record will be 20.

3、 Event Monitoring Points (EMPs)

User defined Event Monitoring Points (EMPs) can be coded in the CICS Application by use of the EXEC CICS MONITOR Command. The following is a Sample of the EXEC CICS MONITOR Commands that would use all of the EMPs pre-defined in the MCT shown previously:

11 11

Page 13: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

*

* User EMP for USERPROG.1

*

EXEC CICS MONITOR

POINT(1)

DATA1(address of data)

DATA2(length of data)

ENTRYNAME(USERPROG)

*

* User EMP for USERPROG.2

*

EXEC CICS MONITOR

POINT(2)

DATA1(address of data)

DATA2(length of data)

ENTRYNAME(USERPROG)

*

* User EMP for USERDEPT.1

*

EXEC CICS MONITOR

POINT(1)

DATA1(address of data)

DATA2(length of data)

ENTRYNAME(USERDEPT)

*

* User EMP for USERDEPT.2

*

EXEC CICS MONITOR

POINT(2)

DATA1(address of data)

DATA2(length of data)

ENTRYNAME(USERDEPT)

4、 CICS System Initialization Parameters

The CICS Transaction Server Region that runs the Application must also have the following Initialization Parameters specified:

Parameter Value Description

MN ON Switches on CICS Monitoring at Initialization. However, unless at least one class of monitoring is set as active, no monitoring records will be written.

MNPER ON Specified that the Monitoring Performance Class is active and Monitoring Performance Class Records will be produced.

MCT nn Specifies the CICS MCT (Monitoring Control Table) to be used. This MCT must include definitions to match all of the EMPs coded in the applications for this CICS Region.

5、 EMP Usage Example

CICS produces one (1) Monitoring Performance Record Data Section per Transaction when Monitoring is activated. The User Data fields allocated in these Data Sections can be used, and then re-used, by EMPs coded in the Application. The following is an example of the use of EMPs USERDEPT.1 and USERDEPT.2 as previously defined: • The DATA1 Option for EMP USERDEPT.1 might address the following data:

Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8

C C B 0 1 A B C • The DATA2 Option might specify a length of 5.

• Therefore the following data will be moved to the USERDEPT User Data field in the CICS Monitoring Performance Record Data Section:

12 12

Page 14: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8

C C B 0 1 A B C

• The following represents the USERDEPT User Data field: Off-set 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Data

• Since the PERFORM Operand of the DFHMCT TYPE=EMP Macro for the USERDEPT.1 EMP specified MOVE(0,5) the data will be moved to the USERDEPT User Data field at Offset 0 for a Length of 5:

Off-set 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Data C C B 0 1

• Later in the Application, the DATA1 Option for EMP USERDEPT.2 might address the following data: Byte

1 Byte

2 Byte

3 Byte

4 Byte

5 Byte

6 Byte

7 Byte

8 Byte

9 Byte 10

Byte 11

Byte 12

Byte 13

S H A N G H A I 1 2 3 4 5

• The DATA2 Option might specify a length of 10. • Therefore the following data will be moved to the USERDEPT User Data field in the CICS Monitoring

Performance Record Data Section: Byte

1 Byte

2 Byte

3 Byte

4 Byte

5 Byte

6 Byte

7 Byte

8 Byte

9 Byte 10

Byte 11

Byte 12

Byte 13

S H A N G H A I 1 2 3 4 5

• The following again represents the USERDEPT User Data field including the data previously moved from EMP USERDEPT.1:

Off-set 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Data C C B 0 1

• Since the PERFORM Operand of the DFHMCT TYPE=EMP Macro for the USERDEPT.2 EMP specified MOVE(5,13) the data will be moved to the USERDEPT User Data field at Offset 5 for a Length of 13:

Off-set 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Data C C B 0 1 S H A N G H A I 1 2 . . .

6、 CICS Monitoring Sample Utility Program – DFH$MOLS

IBM provides a Sample Program DFH$MOLS to Report and Unload CICS Monitoring Performance Records. As provided, the DFH$MOLS program can report upon the User Defined fields from the Monitoring Performance Records but is unable to Unload these fields when using the UNLOAD Control Statement. 6.1 SMP/E Usermod to allow DFH$MOLS to Unload User Data Fields

To allow these fields to be included in the data unloaded when using the UNLOAD Control Statement with DFH$MOLS, a SMP/E Usermod similar to the following can be installed in the CICS Target Zone.

++USERMOD(CMFUMD1) REWORK(2007032)

/*

ADD EMP (EVENT MONITORING POINT) DEFINITIONS TO CICS MACRO DFHMCTDR,

CICS DSECT DFHMNPDA AND ALLOW FOR THE RELATED FIELDS FROM THE SMF

TYPE 110 RECORDS TO BE UNLOADED BY THE DFH$MOLS UTILITY PROGRAM.

*/ .

++VER(C150) FMID(HCI6200) PRE(UQ68396).

++MACUPD (DFH$MOLS) ASSEM(DFH$MOLS) DISTSRC(SDFHSAMP).

./ CHANGE LIST=ALL,NAME=DFH$MOLS OLD:CICSTS22.CICS.SDFHSAMP

CLC CMODNAME(4),=C'USER' USER FIELD? CMFUMD1 33113000

BE UNLDOUT YES, PREPARE FOR UNLOAD CMFUMD1 33116000

UNLDOUT LA R2,PDRBEGIN ADDRESS OF THE OUTPUT DATA AREA UMD1 33136000

./ ENDUP

++MACUPD (DFHMCTDR).

13 13

Page 15: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

./ CHANGE NAME=DFHMCTDR

DFHMCTDT MF3UPROG,DS,C8,USERPROG,1,USERPROG CMFUMD1 94480100

DFHMCTDT MF3OMDLI,DS,C20,USERDEPT,1,USERDEPT CMFUMD1 94480200

./ ENDUP

++MACUPD (DFHMNPDA).

./ CHANGE NAME=DFHMNPDA

PDRUPROG DS CL8 USER EMP 'USERPROG' CMFUMD1 99449700

PDRUDEPT DS CL20 USER EMP 'USERDEPT' CMFUMD1 99449800

./ ENDUP

The following are important notes regarding the creation of this SMP/E Usermod and the changes it makes to the components of DFH$MOLS: • The name of the Usermod as specified in the ++USERMOD statement can be any 7 characters. • The FMID and Pre-requisite SYSMOD(s) as specified in the ++VER statement can be determined by

querying the MAC Entries for DFH$MOLS, DFHMCTDR and DFHMNPDA in the associated CICS SMP/E Target Zone.

• As supplied, DFH$MOLS only allows Data Fields prefixed with DFH* to be Unloaded. • The Assembler Language code as added to DFH$MOLS by the ++MACUPD will allow User Data Fields

prefixed by USER* to also be Unloaded. • The Sequence Number in columns 73 to 80 of the Source Code following the ++MACUPD statements

indicate which existing lines of Assembler Source Code should be replaced and where new lines should be inserted.

• They can only be determined after having examined the Source Code as supplied with CICS and managed by SMP/E.

• The MAC Entries for DFH$MOLS, DFHMCTDR and DFHMNPDA can be queried within SMP/E to determine their related SYSLIB.

• The SMP/E DDDEF Entries for these SYSLIBs will provide the name of the dataset where the supplied Source Code for these members is stored.

• In the lines added to DFHMCTDR, all User Data Fields must be added in the order they are defined in the MCT and the following attributes need to be correct:

Name Example Comments Object Type

DFHMCTDT MF3UDEPT,DS,C20,USERDEPT,1,USERDEPT Must be C for Character

Object Length

DFHMCTDT MF3UDEPT,DS,C20,USERDEPT,1,USERDEPT Must match the allocated length of the User Data field in the CICS Monitoring Performance Record (will be multiple of 4 Bytes).

Object Header

DFHMCTDT MF3UDEPT,DS,C8,USERDEPT,1,USERDEPT Must match the name of the User Data Field as defined in the MCT.

Object ID DFHMCTDT MF3UDEPT,DS,C8,USERDEPT,1,USERDEPT Must be 1.

• In the lines added to DFHMNPDA, all User Data Fields must be added in the order they are defined in the MCT and the length of the fields must match the allocated length of the User Data fields in the CICS Monitoring Performance Record (will be a multiple of 4 Bytes).

6.2 Running DFH$MOLS – Unload Mode

When DFH$MOLS is run in Unload Mode, rather than produce a Listing, it will write a record to a sequential file for each CICS Transaction reported upon in the CICS Monitoring Performance Records found in the SMF Data input. CICS Monitoring Performance Records written to SMF contain multiple Data Sections that each describe the details of a CICS Transaction that was run in this particular CICS Region. By using this approach, CICS minimizes the overhead of writing this Monitoring data to SMF, while continuing to support its Application Workloads successfully. The main advantage of using DFH$MOLS Unload Mode is that it translates these multiple Data Sections in each CICS Monitoring Performance Record into a separate fixed length record for each Transaction. This makes analysis of this data far easier!

14 14

Page 16: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

The following Sample JCL will run the DFH$MOLS Program in Unload Mode: //DFH$MOLS JOB ,CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID

//*

//MNDUP EXEC PGM=DFHMNDUP

//STEPLIB DD DSN=CICSTS22.CICS.SDFHLOAD,DISP=SHR

//SYSUT4 DD DSN=BAYSH03.DFHMNDUP.MNDUPREC,DISP=(NEW,CATLG),

// UNIT=SYSDA,SPACE=(TRK,(1,1))

//SYSPRINT DD SYSOUT=*

//SYSUDUMP DD SYSOUT=*

//SYSIN DD *

DATE=2006001

GAPPLID=CICS

JOBDATE=2006001

JOBNAME=CICSA

MCT=88

SAPPLID=CICS

SYSID=SYS1

TIME=000001

//***************************************************************

//* STEP 2 - UNLOAD THE SMF DATA SET CONTAINING CICS DATA

//***************************************************************

//SMFDUMP EXEC PGM=IFASMFDP

//INDD1 DD DSN=BAYSH03.SMF.DATA,DISP=SHR

//OUTDD1 DD DSN=BAYSH03.DFH$MOLS.SMF,DISP=(NEW,CATLG),

// SPACE=(TRK,(1000,200),RLSE),UNIT=SYSDA

//SYSPRINT DD SYSOUT=*

//SYSIN DD *

INDD(INDD1,OPTIONS(DUMP))

OUTDD(OUTDD1,TYPE(110(1)))

/*

//***************************************************************

//* STEP 3 - RUN DFH$MOLS TO UNLOAD THE CICS MONITORING DATA,

//***************************************************************

//PRNTMND EXEC PGM=DFH$MOLS

//STEPLIB DD DSN=CICSTS22.CICS.SDFHLOAD,DISP=SHR

//INPUT DD DSN=BAYSH03.DFH$MOLS.SMF,DISP=SHR

//SORTWK01 DD SPACE=(TRK,(500,100)),UNIT=SYSALLDA

//SORTDIAG DD SYSOUT=*

//SYSPRINT DD DSN=BAYSH03.DFH$MOLS.SYSPRINT,DISP=(NEW,CATLG),

// SPACE=(TRK,(1000,200),RLSE),UNIT=SYSDA

//SYSOUT DD SYSOUT=*

//SYSABEND DD SYSOUT=*

//SYSUDUMP DD SYSOUT=*

//UNLOAD DD DSN=BAYSH03.DFH$MOLS.UNLOAD,DISP=(NEW,CATLG),

// SPACE=(TRK,(100,100),RLSE),UNIT=SYSDA

//SYSIN DD *

SELECT APPLID=CICS

SELECT TRANID=REXX

UNLOAD DDNAME=UNLOAD,LOCAL

OPTION LOCAL

15 15

Page 17: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

通过 TRUE 客户化

CICS

百硕资深工程师 贺明

1、 引言

在过去的 40 年里,CICS 能够持久流行的一个原因,就是它能根据客户的需要进行相应的客户化,从

而提供强大灵活的扩展功能。本文概要介绍使用 TRUEs(Task Related User Exits)任务相关用户出口

程序客户化 CICS。 1.1 Task Related User Exits(TRUE)

TRUE 与任务相关,因为 TRUE 在任务请求 EXIT 执行才被调起,作为任务执行的一部分。TRUE 程序

可以在任务的开始、结束、Syncpoint、执行 SPI 和 CICS 结束时被自动调用,也可被用户程序调用以访

问非 CICS 的外部资源。

用户程序调用 TRUE 一般用来访问非 CICS 的外部资源(比如 MQ;DB2)。TRUE 的处理机制也被称为

Adapter(适配器),因为它为应用程序提供访问和管理非 CICS 资源的功能。Adapter 一般由三部分组

成:STUB 程序,TRUE 程序以及一些相应的管理程序。

STUB 程序解析调用程序的请求。一般是将本地定义的高级语言调用转换成通过 DFHRMCAL 调用

TRUE,从而使 CICS 将控制权转给出口程序。出口程序 TRUE 则是将访问非 CICS 资源的命令转换成

外部资源管理者的调用,然后将返回值传给应用程序。

管理程序则包含了 ENABLE、DISABLE 等 CICS 命令,以激活/激死、开始/停止 TRUE 程序,并设置

相应的应用参数。我们通常会将管理程序设置在 PLTPI 中,由 CICS 启动 PLTPI PHASE II 过程,执行

管理程序,从而 TRUE 在 CICS 启动后自动被激活、生效。 1.2 GWA 和 Local work area

CICS 对于任务出口程序提供公用的数据区域(GLOBAL WORK AREA GWA)。

GWA(Global Work Area)可以用于各种用途,一般用于存放控制信息、寄数器等等。 在激活出口程序的时候,CICS 会在 16M 线下,根据 GWA 长度参数分配相应的内存空间。只有 GWA关联的所有出口程序被 DISABLE 之后,GWA 地址空间才会被释放。

出口程序被调用时,GWA 的地址存放在 R1 指向的 DFHUEPAR 里面的 UEPGAA。外部的应用程序可

以通过“EXEC CICS EXTRACT”命令得到 GWA 的地址和长度。

CICS 会为每个调用 TRUE 的任务分配一块内存区域,并在任务结束时将其释放。这块内存就是 LWA(Local Work Area),一般用于存放任务执行过程中共享该任务的专有数据。其分配长度则是在激活

16 16

Page 18: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

出口程序的时候,通过参数 TALENGTH 指定。出口程序可以通过参数 UEPTAA 来访问 LWA 的地

址,这块内存可以作为 TWA 的扩展。 2、 编写 STUB 程序 汇编程序可以通过直接调用 DFHRMCAL 宏,高级语言程序则需要通过调用包含 DFHRMCAL 宏的汇

编子程序(也就是 STUB 程序)来调用 TRUE 程序。只有 TRUE 访问非 CICS 资源时,才需要 STUB程序,否则不需要 STUB 程序。

STUB 程序是个简单的汇编程序,功能就是通过 DFHRMCAL 调用 TRUE。值得注意的是:

DFHRMCAL 宏并不使用 BALR 14,15(标准 CALL),子程序会保留从高级语言接收的 R14 值,TRUE 在

完成处理后会直接返回到高级语言程序。

标准的 DFHRMCAL 的调用为:DFHRMCAL TO=pgm-name 3、 编写管理程序 对于每个任务出口程序,一般会提供相应的管理交易和管理程序。管理交易主要是提供用户来交互式

定义、删除、开始、结束出口程序和设置相应的出口程序的参数。管理程序可以通过调用 SPI ENABLE PROGRAM 在 CICS 里面激活定义开始出口程序。

激活定义时的选项 SHUTDOWN、SPI、TASKSTART 则告诉 CICS 是否需要在 CICS 结束、SPI 请求、任务开始/结束的时候自动被调用。

可选项 GALENGTH 则告诉 CICS 在激活出口程序,分配的 GWA 长度。 可选项 TALENGTH 则是告诉 CICS 在任务调用的时候给每个任务分配的 Local Work Area 的长度。 选项 START 则可以让出口程序开始执行。

管理程序还可以通过调用 SPI DISABLE PROGRAM 来禁用出口程序:

选项 SHUTDONW、SPI、TASKSTART 则通知 CICS 将相应的调用停止。 选项 STOP 则会让 CICS 将出口程序所有的调用停止。 选择 EXITALL 则会删除出口程序的定义。

一般 TRUE 的全局参数会通过管理交易程序设置在 GWA 中,管理交易程序通过 EXTRACT EXIT 来得

到 GWA 地址,然后在 GWA 中设置相应的参数值。 4、 编写 TRUE TRUE 程序也可以被设置为在任务开始/结束时执行 SPI,CICS 结束时自动被调用,而不需要使用

DFHRMCAL。TRUE 程序本身也可以通过设置 Schedule Flag Word UEPFLAGS 请求,在任务

SYNCPOINT 时被再次调用。

举例来说,用户程序调用 TRUE 来访问非 CICS 资源,当出口程序被用户程序第一次调用的时候,

UEPFLAGS 的 API bit 位被 CICS 设置。如果 TRUE 更新非 CICS 资源,TRUE 程序设置 UEPFLAGS 的

SYNCPOINT bit 位。当 CICS 结束 SYNCPOINT 的时候,CICS 自动调用 TRUE 程序来完成非 CICS 资

源的 COMMIT,然后 CICS 设置 TRUE 的 UEPFLAGS 的 SYNCPOINT bit 位为 off.

TRUE 程序的 EXECKEY 必须是 CICSKEY,而且是完全可重入的,也就是 RELOAD(NO)。 4.1 调用参数

CICS 在调用出口程序的时候,通过寄存器 R1 提供参数 DFHUEPAR。参数可以通过调用宏

DFHUEXIT TYPE=RM,来生成相应的参数 DSECT DFHUEPAR 和 DFHUERTR.

DSECT DFHUEPAR 描述了出口程序公用的信息区域: DFHUEPAR DSECT

* STANDARD PARAMETERS

UEPEXN DS A ADDRESS OF DFHUERTR

UEPGAA DS A ADDRESS OF GLOBAL WORK AREA

* (ZERO = NO WORK AREA)

UEPGAL DS A ADDRESS OF GLOBAL WORK AREA LENGTH

UEPTCA DS A RESERVED

UEPCSA DS A RESERVED

UEPHMSA DS A ADDRESS OF SAVE AREA USED FOR

* HOST MODULE'S REGISTERS

17 17

Page 19: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

UEPTAA DS A ADDRESS OF TASK AREA

UEPTAL DS A ADDRESS OF TASK AREA LENGTH

UEPEIB DS A ADDRESS OF CURRENT EIB

UEPFLAGS DS A ADDRESS OF FLAGWORD

UEPRMSTK DS A ADDRESS OF KERNEL STACK ENTRY

UEPUOWDS DS A ADDRESS OF LU6.2 UNIT OF WORK ID

UEPSECFLG DS A ADDRESS OF USER SECURITY BLOCK FLAG

UEPNOSEC EQU X'80' SECURITY INACTIVE FOR THIS SYSTEM

UEPSEC EQU X'20' SECURITY ACTIVE FOR THIS SYSTEM

UEPSECBLK DS A ADDRESS OF ADDRESS OF USER SECURITY BLOCK

UEPRMQUA DS A ADDRESS OF RM QUALIFIER

UEPCALAM DS F ADDRESS OF CALLER AMODE INDICATION BYTE

UEPCAM31 EQU X'80' INDICATES ORIGINAL CALLER WAS AMODE 31

UEPSYNCA DS A ADDRESS OF PARMS PASSED TO SYNC PT.

UEPSUPDR EQU X'80' RM UNDERSTANDS SINGLE UPDATER PROTOCOL

UEPREADO EQU X'40' RM IS READ ONLY FOR THIS LUW

UEPTIND DS A ADDRESS OF CALLER'S TASK INDICATORS

UEPTANY EQU X'80' DATA LOCATION ANY

UEPTCICS EQU X'40' TASKDATAKEY = CICS

DFHUERTR DSECT the function definition

UERTFGP DS XL1 X’00’mean TRUE

UERTFID DS XL1 X’01’ SPI CALL, ‘02’ APPL CALL, ‘04’ SYNC CALL

X’08’ Task Manager Call,X’0A’CICS Termination Call

X’0C’ EDF call

TRUE 被调用,寄存器 R1 里面存放了 DFHUEPAR 的指针。UEPEXN 里面指向 DFHUERTR,

UEPGAA 存放 GWA 的地址,UEPGAL 存放 GWA 长度,UEPTAA 存放 Local Work Area 的地址,

UEPTAL 存放相应长度,UEPTFID 则告诉 TRUE 本次调用的类型,UEPHMSA 则是存放了调用程序的

RSA。UEPEIB 存放的是 CICS 调用 TRUE 时候创建的 EXEC 环境,它不同于调用程序的 EIB,仅供

TRUE 调用 CICS SERVICE 的时候使用。

除了公用的参数外,用于具体各类调用的参数是通过调用程序 RSA 里面的 R1 来传递的。而

DFHUEPAR 里面的 UEPHMSA 存放了调用程序的 RSA。对于 CICS SPI、Syncpoint Call、Task Manager Call、CICS Termination Call、EDF Call 都是 CICS 提供的标准参数列表,在《CICS Customization Guide》里面可以查询具体参数及其含义。对于应用程序调用,也就是通过 DFHRMCAL调用,参数则是由应用程序在调用 STUB 程序的时候由用户程序指定。 4.2 寄存器使用规则

以下是调用 TRUE 时寄存器的使用规则: R1 包含指向 DFHUEPAR 的指针 R14 包含完成 EXIT 后的返回地址 R15 包含 EXIT 本身的入口地址 DFHUEPAR 里面的 UEPHMSA 保存调用程序的寄存器存储地址。其中调用程序寄存器里面的 R1指向调用的参数,R15 则能传递调用程序的返回代码

其它寄存器没有使用限制 4.3 使用 CICS SERVICE 当 TRUE 程序调用时,CICS 提供了 CICS 命令支持,包括 DFHEISTG。但在使用 TRUE 的时候,也要

注意以下情况:

TRUE 在 CICS TERMINATION 时被调用,不能更改任何可恢复的资源 EXC CICS XCTL 或者 SHUTDOWN 不能被使用

TRUE 在 CICS abend 时被调用,不能使用任何 CICS Service

使用 DFHEIENT 会动态分配 DFHEISTG,返回的时候也必须使用 DFHEIRET 或者 CICS RETURN来释放 DFHEISTG

18 18

Page 20: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

EXEC 命令使用寄存器 R0、R1、R14、R15;注意事先备份/恢复寄存器内容

当任务开始,结束,syncpoint 调用的时候,不能使用 SYNCPOINT 命令

每次 TRUE 调用的时候,新的 EXEC 环境被创建,除了 Local Work Area 和 GWA,其它不能在

TRUE 调用之间被共享

编译 TRUE 可以使用 SYSEIB 选项,这样就不会更改调用程序的 EIB 值。或者 TRUE 使用 UEPEIB重置 DFHEIBP, DFHEIBR 使 CICS 命令返回更改 UEPEIB

5、 案例 假设我们需要联机查询当日完成交易中 CPU 消耗超过某个阀值,或者响应时间超过某个阀值的所有交

易。

我们可以通过客户化 TRUE,TXMA 管理交易,管理程序 TXMADM 激活/激死 EXIT TXMTRUE,并

且将阀值设置在 GWA 中。

在每个任务结束时,进入出口程序 TXMTRUE,程序通过 COLLECT STATISTICS MONITOR 得到任

务的 CPU 时间、交易起始时间、结束时间。判断任务所需 CPU 时间,或者响应时间超过设置阀值

的,并将其写入 UMT 文件 TXMEXCP 中。

以下是管理程序 TXMADM 的主要代码: CBL LIB XOPTS(SP)

WORKING-STORAGE SECTION.

01 FILLER PIC X(8) VALUE 'TXMADM'.

01 WK-RESP PIC S9(4) COMP.

01 GWALEN PIC S9(4) COMP.

01 ENTRYNM PIC X(8) VALUE 'TXMTRUE'.

01 OUT-TXT PIC X(60) VALUE SPACES.

01 GWA-PTR POINTER.

01 IN-LEN2 PIC 9(4).

01 IN-LEN PIC S9(4) COMP.

01 IN-MSG PIC X(80).

01 IN-TX PIC X(4).

01 IN-ACTION PIC X(8).

01 IN-VALUE.

10 IN-VALUE-TX PIC X(4).

10 IN-VALUE-CPU PIC 9(8).

10 IN-VALUE-RESPONSE PIC 9(8).

LINKAGE SECTION.

01 GWAWORK.

10 GWATRAN PIC X(4).

10 GWACPUT PIC 9(8) COMP.

10 GWAELPT PIC 9(8) COMP.

PROCEDURE DIVISION.

000-MAIN-BEGIN.

MOVE SPACES TO OUT-TXT

MOVE SPACES TO IN-MSG

MOVE 12 TO GWALEN

MOVE 80 TO IN-LEN

EXEC CICS RECEIVE INTO(IN-MSG) LENGTH(IN-LEN) RESP(WK-RESP) (1)

END-EXEC

MOVE IN-LEN TO IN-LEN2

ADD 1 TO IN-LEN2

MOVE ',' TO IN-MSG(IN-LEN2:1)

UNSTRING IN-MSG DELIMITED BY ','

INTO IN-TX,

IN-ACTION,

IN-VALUE-TX,

IN-VALUE-CPU,

IN-VALUE-RESPONSE

19 19

Page 21: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

EVALUATE IN-ACTION (2)

WHEN 'DISABLE' PERFORM 100-DISABLE-EXIT

WHEN 'ENABLE' PERFORM 200-ENABLE-EXIT

WHEN 'SET' PERFORM 300-SET-EXIT

WHEN 'START' PERFORM 400-START-EXIT

WHEN 'STOP' PERFORM 500-STOP-EXIT

WHEN OTHER PERFORM 600-MISS-PARM

000-MAIN-END.

EXEC CICS RETURN END-EXEC.

GOBACK.

100-DISABLE-EXIT.

EXEC CICS DISABLE PROGRAM(ENTRYNM) EXITALL RESP(WK-RESP)

END-EXEC

200-ENABLE-EXIT.

EXEC CICS ENABLE PROGRAM(ENTRYNM) GALENGTH(GWALEN) (3)

RESP(WK-RESP)

END-EXEC

300-SET-EXIT.

EXEC CICS EXTRACT EXIT PROGRAM(ENTRYNM) GASET(GWA-PTR) (4)

GALENGTH(GWALEN)

RESP(WK-RESP)

END-EXEC

SET ADDRESS OF GWAWORK TO GWA-PTR

MOVE IN-VALUE-TX TO GWATRAN

MOVE IN-VALUE-CPU TO GWACPUT

MOVE IN-VALUE-RESPONSE TO GWAELPT

400-START-EXIT.

EXEC CICS ENABLE PROGRAM(ENTRYNM) START RESP(WK-RESP)

END-EXEC

EXEC CICS ENABLE PROGRAM(ENTRYNM) TASKSTART RESP(WK-RESP) (5)

END-EXEC

500-STOP-EXIT.

EXEC CICS DISABLE PROGRAM(ENTRYNM) STOP RESP(WK-RESP)

END-EXEC

600-MISS-PARM.

MOVE 'PLEASE INPUT PARM' TO OUT-TXT

EXEC CICS SEND TEXT FROM(OUT-TXT) LENGTH(60) END-EXEC

其中: (1) TXMADM 接受屏幕输入

来选择激活/激死、开始/停止或者设置出口程序 TRMTRUE

A 区域的控制参数交易、

(5) 在任务开始/结束时自动调用。

(2) 然后根据输入的 ACTION(3) 激活定义出口程序,GALENGTH 指定 GWA 的长度,CICS 分配 GWA (4) 通过 EXTRACT EXIT 得到 GWA 的地址,然后根据屏幕输入设置 GW

CPU 阀值、响应时间阀值。输入交易为****表示监控全部交易,输入的 CPU 及响应时间的阀值单

位为毫秒 使出口程序

以下是出口程序 TXMTRUE 的主要代码: *ASM XOPTS(CICS,SP)

COPY ASMMSP

COPY DFHMNTDS

DFHUEXIT TYPE=XPIENV

DFHUEXIT TYPE=RM

TXMTRUE DFHEIENT CODEREG=R12,DATAREG=10,EIBREG=11

TXMTRUE AMODE 31

TXMTRUE RMODE ANY

MVC WTOLEN(2),=H'80'

MVC WTOFLG(2),=H'0'

LR R2,R1 (1)

20 20

Page 22: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

USING DFHUEPAR,R2

L R3,UEPGAA

USING GWAWORK,R3

MVC DFHEIBP,UEPEIB (2)

L DFHEIBR,UEPEIB

MVC DFHEICAP,=X'80000000'

L R4,UEPTAA

L R5,UEPEXN

USING DFHUERTR,R5

IF (CLC,UERTFGP(1),NE,=X'00') THEN

B EXIT

ENDIF

SELECT

WHEN (CLC,UERTFID(1),EQ,=X'08')

B TASKCALL

OTHRWISE

B EXIT

ENDSEL (3)

DROP R5

TASKCALL EQU *

EXEC CICS ADDRESS EIB(R11)

IF (CLC,EIBTRNID(2),EQ,=C'CE') THEN

B EXIT

ENDIF

IF (CLC,GWATRAN(4),NE,=C'****') THEN

IF (CLC,EIBTRNID(4),NE,GWATRAN) THEN (4)

B EXIT

ENDIF

ENDIF

L R8,UEPHMSA

L R5,24(R8)

L R5,0(R5)

CLC 0(1,R5),=X'40' (5)

BNE TASKEND

TASKST EQU *

B EXIT

TASKEND EQU *

EXEC CICS COLLECT STATISTICS (6)

MONITOR(EIBTASKN)

SET(R8)

RESP(WKRESP)

IF (CLC,WKRESP(4),NE,DFHRESP(NORMAL)) THEN

WTO 'COLLECT MONITOR ERROR'

B EXIT

ENDIF

USING DFHMNTDS,R8

MVC CLOCKBIN(4),TMRCPUT (7)

BAL R5,CLOCKCVT

MVC STCKVAL(8),TMRATTT

BAL R5,STCKCVT

MVC TXSTART(16),CONVTIME

MVC STCKVAL(8),TMRDETT (8)

BAL R5,STCKCVT

MVC TXSTOP(16),CONVTIME

IF (CLC,CLOCKTMB,GE,GWACPUT) THEN (9)

MVC EXCREC(80),=CL80' '

MVC ETASKNO(4),EIBTASKN

MVC ETASKID(4),EIBTRNID

MVC ECPUT(4),CLOCKTMB

MVC ESTART(16),TXSTART

21 21

Page 23: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

MVC ESTOP(16),TXSTOP

EXEC CICS WRITE FILE('TXMEXCP')

FROM(EXCREC)

RIDFLD(EXCKEY)

LENGTH(80)

KEYLENGTH(36)

RESP(WKRESP)

IF (CLC,WKRESP(4),NE,DFHRESP(NORMAL)) THEN

WTO 'WRITE FILE ERROR'

B EXIT

ENDIF

ENDIF

B EXIT

CLOCKCVT EQU *

ST R5,REGSAVE

SR 0,0

L R7,CLOCKBIN

N R7,=X'00FFFFFF' max 16777215

SLL R7,4 *16 convert to microsend

XR R6,R6

D R6,=F'1000' *GET MS, MAX 4.47 MINUTES

ST R7,CLOCKTMB *GET BIN MS

CVD R7,CLOCKTMP *GET PACK MS

L R5,REGSAVE

BR R5

STCKCVT EQU *

ST R5,REGSAVE

L R0,=X'00'

STCKCONV STCKVAL=STCKVAL,CONVVAL=CONVTIME,TIMETYPE=DE

DATETYPE=YYYYMMDD,MF=(E,LIST1)

IF (LTR,R15,R15,NZ) THEN

MVC WTOVALUE(76),=CL76' '

ST R15,WTOVALUE

WTO MF=(E,WTOTXT)

WTO 'STCKCONV FAILURE'

ENDIF

L R5,REGSAVE

BR R5

EXIT L R15,0

DFHEIRET RCREG=15 return to CICS with RC zer

SPACE ,

DFHEISTG DSECT

DS 0F

WTOTXT EQU *

WTOLEN DS H'80'

WTOFLG DS H'0'

WTOVALUE DS CL76

WKRESP DS F

WKRESP2 DS F

REGSAVE DS F

EXCREC DS 0CL80

EXCKEY DS 0CL36

ESTART DS CL16

ESTOP DS CL16

ETASKNO DS CL4

EXCOTHER DS 0CL44

ETASKID DS CL4

ECPUT DS CL4

EFILL DS CL36

LIST1 STCKCONV MF=L

22 22

Page 24: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

STCKVAL DS CL8

CONVTIME DS CL16

CLOCKBIN DS CL4

CLOCKTMB DS F

CLOCKTMP DS PL8

TXSTART DS 0CL16

TXSTTME DS CL6 HH MM SS TTTTTT

DS CL2

TXSTDTE DS CL4 YYYY

DS CL4 MMDD

TXSTOP DS CL16

TXSPTME DS CL6 HH MM SS TTTTTT

DS CL2

TXSPDTE DS CL4 YYYY

DS CL4 MMDD

GWAWORK DSECT

GWATRAN DS CL4

GWACPUT DS F

GWAELPT DS F

END TXMTRUE

其中: (1) R1 指向调用参数 DFHUEPAR,设置 GWA 基址

使用 为 创建的 重新设置 基址(2) CICS TRUE EIB EIB TRUE 调用类型,只有 TASK 任务开始/结束的时候才继续执行

全部交易 还是任务结束

据,对应汇编的 COPYBOOK

到秒数

T YYMMDD 间、结束时间、任务

从上 发基于 MONITOR 数据的各类信息进行联机查

来客户化 CICS,通过结合 CICS 的其它客户化功能

Exit、Monitor、Journal,可以提供更为强大、灵活的功能。本文的案例只是一个简单的演

(3) 判断

(4) 判断交易代码是否为监控交易代码,****表示监控

(5) 根据调用程序的 RSA 存放的 R1 值,判断是任务开始

(6) 通过 COLLECT STATISTIC MONITOR 取得交易的 MONITOR 性能数

在 DFHMNTDS (7) 交易 CPU 字段存放的是二进制值,以 16 微秒为单位,调用子程序得

(8) 交易开始时间、结束时间存放的是 STCK 时间值,使用 STCKCONV 转换时间值为HHMMSSTTTTT

(9) 比较交易 CPU 时间和设置在 GWA 的 CPU 阀值,如果超过,则将交易开始时

号、交易代码、CPU 时间写入文件 TXMEXCP 中 CPU 异常数据写入文件后,我交易 们就可 开发相应的查询程序,浏览文件 TXMEXCP。

面的示例,我们知道还可以通过客户化 TRUE,开

询,比如按照 LU 统计各个 LU 上来的交易量。 6、 总结

CICS 提供了非常灵活、强大的客户化功能。用户可以根据自己的需要客户化 CICS,从而扩展产品功

只是讨论了使用任务出口程序(TRUE)能。本文

Global User示,并未经过压力测试和性能调优,不能直接应用到生产系统上,只是希望这个例子能为大家客户化

CICS 带来一定的帮助。

23 23

Page 25: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

DB2 Tuning

百硕外籍技术专家 Darryn Salt

问题:What are RID Pool Failures?

专家解答: First I will provide some background on what the RID pool is. The RID pool is an area of storage in the DBM1 address space used for sorting record IDs (RIDs) during the execution of SQL that uses list prefetch (including hybrid joins and multiple index access). The size of the RID pool is specified in a ZPARM parameter and can be between 128 KB and 10,000 MB (if set to 0, RID list processing is disabled). RID pool processing can fail under certain circumstances and this will result in the list Prefetch being aborted and a full scan being used instead to retrieve the data. A scan obviously takes substantially more time and uses more CPU, especially if the table is big. It will also have a negative affect on the table's Bufferpool because other applications will suffer when the Bufferpool is flooded with all the pages from a potentially large table. RID pool failures should therefore be avoided and any DB2 tuning exercise should look at the RID pool statistics from such tools as DB2PM. RID pool failures are usually a sign of poor resource allocation, high concurrent activity, or application SQL with access path problems. The following was extracted from a DB2PM statistics report:

RID LIST PROCESSING QUANTITY --------------------------- -------- MAX RID BLOCKS ALLOCATED 493.00 CURRENT RID BLOCKS ALLOCAT. 0.29 TERMINATED-NO STORAGE 0.00 TERMINATED-EXCEED RDS LIMIT 241.00 TERMINATED-EXCEED DM LIMIT 0.00 TERMINATED-EXCEED PROC.LIM. 0.00

Of interest are the four TERMINATED entries. I will now explain what they mean: • NO STORAGE – There is insufficient virtual storage. This failure occurs when the 2GB limit is reached.

Solution – reduce the storage used by other structures below the 2GB line in the DBM1 address space. • EXCEED RDS LIMIT - The number of RID entries exceeded the RDS limit of 25% of the number of

rows in the table being accessed. Solution – see the discussion below. • EXCEED DM LIMIT - The number of RID entries exceeded the Data Manager limit of 16 million RIDs.

Solution – same as EXCEED RDS LIMIT above. • EXCEED PROC.LIM. – The maximum RID list storage was exceeded. Solution – increase the size of

the RID pool in ZPARMS. RID pool failures due to EXCEED RDS LIMIT are the most common failures so I will discuss them in more detail. These are caused when the number of RID's from a particular index being loaded into the RID pool becomes greater than 25% of the number of rows in the table. As an example let's say that a table hasn't had Runstats performed on it for one year. At the time Runstats was performed the table had 10,000 rows in it but now it has got 100,000 rows in it. If a list Prefetch is performed then only 2,500 RID's can be loaded into the RID pool (25% of 10,000) before there is a RID pool failure. This is not many RID's compared to the current number of rows now in the table. If however, a recent Runstats had been performed then up to 25,000 RID's could have been successfully processed in the RID pool. This is why it is important that DB2 has the correct (and latest) information about table sizes. So make sure runstats and rebinds are performed regularly! Another way to avoid RID pool failures is to avoid list Prefetch altogether. If the cluster ratio of a table falls below 80% then DB2 may decide to use a non-clustering index (if available) with list Prefetch, in preference to using the clustering index. If a table is kept clustered (a high cluster ratio) then the clustering index will be used and list Prefetch will be avoided. This is why I always suggest to Reorg tables with cluster ratios less than say 90% and never let cluster ratios fall below 80%. So what do you do if a proper strategy of Reorgs, Runstats, rebinds doesn't prevent RID pool failures? You will need to find the specific SQL causing the failure and tune it. Run a DB2PM accounting long report (not a trace)

24 24

Page 26: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

on all transactions/batch jobs and look through the report for transactions/jobs that experienced RID pool failures. Try to identify the program/package that caused the failure - it may be the one with the longest elapsed time. Now EXPLAIN the package and look in the output for any SQL using list Prefetches (identified by "L"). Reorg and/or perform Runstats on the table being accessed (if necessary). List Prefetch may also be avoided by creating a more suitable index, re-writing the SQL, or by adding "OPTIMIZE FOR 1 ROW" at the end of the SELECT clause (but this should only be done as a last resort). I hope that you now understand more about the RID pool and how important it is to include it as one of your DB2 tuning tasks. Please don’t hesitate to contact me if you would like more information or help on this topic.

25 25

Page 27: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

RLS 技术及其应用 中国建设银行北京数据中心 王璐璐 1、 摘要

本文介绍 IBM 主机操作系统中的 RLS(Record Level Sharing)技术及其应用。

RLS 是 VSAM 文件的记录级共享技术。在实际的应用系统中,常常需要在多个应用程序间共享 VSAM文件,这些应用程序要同时对 VSAM 文件进行读/写操作。RLS 技术提供了一种文件共享机制:通过为

并行读/写操作的 VSAM 文件记录加锁,来保证数据的完整性和一致性。

2、 引言

RLS 是 DFSMS/MVS V1.3 提供的新功能,它提供了一种新的 VSAM 文件访问方式。以 RLS 方式打开

的 VSAM 文件,可以同时被 SYSPLEX 系统中的多个应用程序读写或更新。文件的访问单位为记录,

由 RLS 来保证数据的完整性和一致性,CICSPLEX 中的多个 CICS REGION 就可以通过 RLS 技术实现

VSAM 文件的共享。

DFSMS/MVS V1.3 提供了一个新的数据共享子系统“SMSVSAM”,它运行在独立的地址空间中,提

供 VSAM RLS 的功能。SMSVSAM 子系统通常在 MVS 系统 IPL 的时候自动完成初始化,它的 Cache Structure 和 Lock Structure 在 Coupling Facility 中,同时它也在自己的地址空间和 Data Space 中提供其

所在 MVS 系统的 Local Buffer。

3、 RLS技术介绍

图 1 RLS 环境结构图 如图 1 所示,在 RLS 环境中,SYSPLEX 各系统的应用程序通过 SMSVSAM 地址空间访问共享的

VSAM 文件,锁机制和 VSAM 文件的数据被存放在 CF 的 Structure 中。

3.1 基本概念

3.1.1 SMSVSAM

RLS 是一种新的 VSAM 文件访问方式,它提供记录级的读写完整性,可以在 SYSPLEX 的多个应用程

序间共享 VSAM 文件。RLS 功能由 DFSMS 提供的子系统 SMSVSAM 实现,其启动参数在 PARMLIB的 IGDSMSxx 中指定。将参数 RLSINIT 设置为 YES,SMSVSAM 子系统就会在 MVS 系统 IPL 的时候

自动完成初始化。 3.1.2 CF Structure

SMSVSAM 子系统需要两类 CF Structure,用于实现锁和 VSAM 文件数据的共享。

Lock Structure 的默认名字是 IGWLOCK00,用于存储 VSAM 文件访问时记录级锁的信息。当应用程序

需要访问 VSAM 文件的记录时,SMSVSAM 会检查 IGWLOCK00 中是否有这条记录的锁。如果没有锁

26 26

Page 28: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

就允许访问这条记录,同时记录下锁的信息;如果有锁就根据锁的类型(共享锁还是独占锁)及访问

请求的类型(共享还是独占访问请求)来决定允许访问还是等待,同时更新锁的信息。

Cache Structure 用于存放需要共享访问的数据,由于 CF 可以被 SYSPLEX 中的各系统共享,访问性能

优于磁盘,这样可以达到即共享数据又提高访问性能的目的。 3.1.3 SHCDS

SHCDS(Sharing Control Data Set)是一个 VSAM linear 数据集,是 RLS 用于保证数据完成性的关键元

素。为避免单点故障,需定义两个同时 Active 的 SHCDS,至少一个备用的 SHCDS,这是 SMSVSAM地址空间启动的必要条件。

SHCDS 中保存以下信息:当前使用的 CF Lock Structure 的名字;SYSPLEX 中各系统的状态及发生故

障的系统;系统发生故障的时间;使用 RLS 功能的应用程序状态;使用 CF 的状态为 Open 的数据集;

当前有锁的数据集;状态设置为可以用非 RLS 方式访问的数据集等。

因为 VSAM 文件记录级锁的信息存放于 CF Lock Structure 中,这样就引入了一些新的故障类型。如:

SMSVSAM 地址空间重启,CF Structure 的故障等。当故障发生时,SHCDS 可以保存关键信息用于保

证 RLS 环境下丢失的数据量最少,以保证数据不会被破坏。

3.2 性能调优

3.2.1 Local Buffer

SMSVSAM 通过 Local Buffer 来提供文件的访问性能,Local Buffer 定义在 SMSVSAM 的地址空间或

Data Space 中,其访问性能明显优于磁盘。可以通过查看 SMF 数据(类型 42 中的子类型 19)来了解

Local Buffer 的命中率。 RLS 的 Local Buffer 有两种:32 位的 Buffer 和 64 位的 Buffer。

32 位的 Buffer 在 Data Space 中,最大为 1728M。可以通过系统 PARMLIB(IGDSMSxx)中的参数

RLS_MAX_POOL_SIZE 来指定 32 位 Buffer 的最大值。

64 位的 Buffer 在 SMSVSAM 的地址空间中,可以通过 PARMLIB( IGDSMSxx)中的参数

RLSAboveTheBarMaxPoolSize 指定 64 位 Buffer 的最大值。

虽然 64 位 Buffer 空间大于 32 位 Buffer,提高了 Buffer 的命中率,但是 64 位的 Buffer 会多消耗 10-20%的 CPU 资源。

VSAM 文件的 Data Class 参数 RLSAboveTheBar 如果设置为 YES,该 VSAM 文件就可以使用 64 位

Buffer,否则只能使用 32 位 Buffer。综合考虑命中率和性能,建议对插入和更新较多的 VSAM 文件使

用 32 位 Buffer,而读操作较多的文件使用 64 位的 Buffer。 3.2.2 CF Cache Structure

Cache Structure 用于存放需要共享访问的数据,以提高访问性能。可根据需要在 Cache Structure 中存放

VSAM 的 Index 和 Data、只存放 VSAM 的 Index、或只存放被更新的数据。理想的 Cache Structure 的大

小为: Total_Cache_Sturcture_sizes = ((RLS_Max_Pool_Size) * Number_of_SMSVSAMs_in_Sysplex) + (RLSAboveTheBarMaxPoolSize(system1) + … + RLSAboveTheBarMaxPoolSize(systemn)) 也就是所有 Local Buffer 大小的总和。可根据实际需求调整 Cache Structure 的大小,只要足够存放

Local Buffer 中的所有数据就可以了。 3.2.3 CF Lock Structure

理想的 Lock Structure 的大小为: Lock_Structure_Size = 10M * number_of_Systems_in_sysplex * Lock_entry_Size Lock_entry_Size (依赖于 CFRM Policy 中 MAXSYSTEM 的值): MAXSYSTEM <= 7 Lock_entry_size = 2

27 27

Page 29: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

MAXSYSTEM >= 8 & <24 Lock_entry_size = 4 MAXSYSTEM >=24 & <=32 Lock_entry_size = 8 3.3 故障恢复

3.3.1 Retained Lock

当一个 UOW(Unit of Work)获得一个 Lock 时,这个 Lock 称为 Active Lock。当 UOW 成功完成后,该

Lock 被释放。如果 UOW 失败,Active Lock 会转化为 Retained Lock。应用程序或 SMSVSAM 的故障也

会引起 Retained Lock。对于有 Retained Lock 的 VSAM 记录,任何新的访问请求都会被立刻拒绝,这

样即保证了数据的完整性又防止了新访问请求的等待。Retained Lock 要保持到 UOW 完成才能被释

放。在 CICS 中如果有交易失败,CICS 可以 Back-out UOW,Back-out 成功,Retained Lock 就可以被释

放。

可以使用命令查看系统中是否有 Retained Lock 及引起 Retained Lock 的原因,对于不能由应用程序或

SMSVSAM 自动恢复的 Retained Lock,可以发命令将其释放,但一定要从应用的角度保证数据的完整

性。 3.3.2 Lost Lock

当 VSAM 文件有 Active Lock,CF Lock Structure 发生故障,同时至少一个 SMSVSAM 地址空间发生故

障,并且拥有 Active Lock 的应用程序是通过发生故障的 SMSVSAM 访问 VSAM 文件时,才会出现

Lost Lock。Lost Lock 信息被记录在 SHCDS 中,并且是针对整个 VSAM 文件的,而不是针对文件中的

记录。只有拥有 Lost Lock 的应用程序才能打开 VSAM 文件并且恢复 Lost Lock,其它应用程序打开文

件的请求都会失败,这样就保证了 VSAM 文件的数据完整性。只有在发生故障时所有更新这个 VSAM文件的 UOW 都完成了,Lost Lock 才能被释放。对于 Back-out 失败的 UOW,可以用 RESETLOCKS 命

令放弃 Back-out,但一定要从应用的角度保证数据的完整性。

4、 RLS的实施

4.1 实施规划

4.1.1 VSAM 文件的分类

根据应用环境的需要,将 VSAM 文件分类,只有那些需要在多个 CICS Region 中同时进行写操作的文

件才需要采用 RLS 方式访问。

根据是否需要恢复,将采用 RLS 方式访问的 VSAM 文件分成三类: 不需要恢复

只需要 Back-out

需要 Back-out 和向前恢复

4.1.2 SMSVSAM 环境的规划

根据使用 RLS 方式访问的 VSAM 文件的数量,规划 Local Buffer 和 CF Structure 的大小及使用方式。

根据使用 RLS 方式访问的 VSAM 文件的分类,规划 Storage Class 的定义方式。规划 IGDSMSxx 中其

它 RLS 相关参数的定义值。 4.2 技术实现

4.2.1 定义 CF Structure

根据第 3.2 节中计算 CF Structure 大小的方法,算出理想的 Structure Size,用 IXCMIAPU Utility 定义

CFRM Policy,JCL 示例如下: //UTILITY EXEC PGM=IXCMIAPU //STEPLIB DD DSN=SYS1.MIGLIB,DISP=SHR //SYSPRINT DD SYSOUT=A //SYSIN DD * DATA TYPE(CFRM) REPORT(YES) DEFINE POLICY NAME(CSCPLEXT) REPLACE(YES) /*BEGIN add by TSCDJ: RLS structure */ STRUCTURE NAME(IGWLOCK00)

28 28

Page 30: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

SIZE(30000) INITSIZE(15000) PREFLIST(C01,C02)

STRUCTURE NAME(CACHE01) SIZE(70000) INITSIZE(50000) PREFLIST(C01,C02) STRUCTURE NAME(CACHE02) SIZE(70000) INITSIZE(50000) PREFLIST(C01,C02) /*END add by TSCDJ: RLS structure */

4.2.2 SMS 环境的定义

由于 RLS 方式访问的文件根据是否需要恢复分成三类,相应的需要定义三个 Data Class:

1) DCRLSBR:LOG 参数定义为 UNDO,使用该 DC 的文件需要 Backward Recovery。

2) DCRLSFR:LOG 参数定义为 ALL,使用该 DC 的文件需要 Backward Recovery 和 Forward Recovery。需要定义 Logstream 用于记录 Forward Recovery Log,DC 的参数 LOGSTREAMID 要定

义为此 Logstream 的名字。

3) DCRLSNR:LOG 参数定义为 NONE,使用该 DC 的文件不需要 Recovery。

为使用 4.2.1 中定义的 Cache Structure 需要定义 Cache Set,在 Cache Set 中指定 Cache Structure 的名

字。定义 Storage Class SCRLS 时,参数 Cache Set Name 指向所定义的 Cache Set 名字。这样当 VSAM文件的 Storage Class 定义为 SCRLS 时,就能够使用到相应的 CF Cache Structure。

4.2.3 定义 SHCDS

SHCDS 名字的前两段为 SYS1.DFPSHCDS,是个 VSAM Linear 数据集。定义 SHCDS 的作业示例为: //ALLOCLD1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE CLUSTER (NAME(SYS1.DFPSHCDS.ACTIVE.VXP0301) - LINEAR - CISZ(4096) - STORCLAS(SXPXXS04) - SHAREOPTIONS(3 3) - CYL(10 5) - VOLUME(XP0301) ) /*

4.2.4 RACF 授权

需要为子系统授权,使其能够访问 SMSVSAM Server,RACF 的 Class 为 SUBSYSNM,Profile 的名字

为子系统的名字。对于 CICS 子系统,需要用 CICS 的 Applid 作为 Profile 的名字。例如对于 CICS CI1ACAA1,Profile 的定义应为: RDEFINE SUBSYSNM CI1ACAA1 UACC(NONE) NOTIFY(userid) PERMIT CI1ACAA1 CLASS(SUBSYSNM) ID(CICSDA# # ) ACCESS(READ) 4.2.5 修改系统参数 IGDSMSxx

修改系统 PARMLIB(IGDSMSxx)中 RLS 相关的参数,包括: CF_TIME:SMF 数据的 Type42 Subtype15-19 用于记录 CF 及 SMSVSAM 的性能信息,该参数用

于设定收集这些信息的采样周期。

DEADLOCK_DETECTION:指定 Storage Management Locking Services 检测死锁的周期。

RLSINIT:设置为 YES,系统 IPL 时 SMSVSAM 子系统会自动初始化。

29 29

Page 31: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

RLS_MaxCfFeatureLevel:如果为 Z 只有小于 4K 的 CI 可以放入 CF Cache Structure,如果为 A 则

大于 4K 的 CI 也可以放入 CF Cache Structure。

RLS_MAX_POOL_SIZE:指定 32 位 Buffer 的最大值。

RlsAboveTheBarMaxPoolSize:指定 64 位 Buffer 的最大值。

RlsFixedPoolSize:指定系统中专用于 VSAM RLS Buffer 的实存空间,包括 2G Bar 之上/下的空

间。

SMF_TIME:指定收集 SMF Type 42 Subtype 1,2,15-19 数据的时间点是否和系统的 SMF 数据

收集的时间点保持一致。

4.2.6 定义 VSAM 文件

根据 VSAM 文件的分类,分别使用不同的 DC 及 SC SCRLS 定义 VSAM 文件。 4.2.7 修改应用程序

根据系统环境的修改,相应地修改应用程序。 4.3 性能及恢复测试

4.3.1 性能测试

进行压力测试,根据测试的性能数据调整系统参数,消除性能瓶颈,提高系统整体性能。根据项目计

划分别在测试环境和上线前的生产环境中进行测试。

4.3.2 恢复测试

模拟 Lost Lock 和 Retained Lock 的状况,探寻在各种场景下的系统恢复手段,制定故障恢复的操作流

程。 参考文献 [1] 李洪涛. CICS VSAM RLS Implementation.

[2] 李洪涛. CICS Recovery and Restart Considerations for RLS.

[3] Terri Menendez.VSAM RLS Restrictions.

[4] Terri Menendez.VSAM RLS Performance and Tuning. [5] IBM ITSO San Jose Center. CICS and VSAM Record Level Sharing Implementation Guide. [6] IBM ITSO San Jose Center.CICS and VSAM Record Level Sharing Planning Guide. [7] IBM ITSO San Jose Center. CICS and VSAM Record Level Sharing Recovery Considerations.

30 30

Page 32: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

论银行数据中心的系统管理 国际商业机器全球服务(中国)有限公司,软件部:李春晖

1、 企业 IT 系统管理面临的挑战

IT 系统管理已经有二十几年的历史,其发展历程已经从无序、混沌的运维管理,经过简单的对重要资

源运行的自动监视,直至发展为企业级的 IT 系统管理。

图 1:企业 IT 系统管理的构成

当今,IT 系统管理可以看成由服务支持和服务提供两部分工作组成。服务支持是 IT 管理者每天进行的

日常管理工作,工作重点偏重于 IT 技术;服务提供是将管理数据转化为决策信息,工作重点偏重于业

务视角来看待问题。

目前 IT 经理和 IT 管理人员 80%到 85%的时间花费在服务支持方面,而这方面的工作大部分是日常

的、重复的和低价值的;如何在保证系统正常运行的情况下,将更多的时间和精力节省出来,把日常

的 IT 管理数据转化为服务提供的决策信息,进而更好地为业务系统服务,提高 IT 服务水平,是系统

管理在电子商务新时期对我们提出的新的挑战。

随着企业规模的不断扩大,业务应用的持续增加,其 IT 基础设施的架构越来越复杂,单纯凭某个工具

或某个人,已经不能胜任如此大的工作量和满足业务紧迫性的要求,必须有一整套的企业级系统管理

的解决方案。

那么什么是企业级系统管理呢?

企业级系统管理是管理一个企业里信息系统及其相关组件的一整套原理和工具,不仅是管理软件产品

本身,而且还包括企业管理流程(Process)、企业管理规范 (Policy)、 企业业务(Business), 和将企业管理

流程、企业管理规范及企业业务贯彻到软件产品中去的实施方法学。

企业管理流程定义了企业内部的报告流程、决策流程、问题处理流程等等。

企业管理规范定义了什么样的资源被什么样用户或用户组访问,定义了访问时间和访问权限;定义了

什么样的参数需要监控,以及阈值、统计方法等。

企业业务就是围绕具体的业务进行管理,从而让管理员从不断跟踪 IT 技术以适应企业发展中解脱出

来,有更多的精力结合自己的业务去管理。所以企业级的管理就是最终能够产生业务管理视图

(Business View)。

实施方法学就是一套将企业管理流程、企业管理规划、企业业务(Business)落实到企业管理工具里去的

理论基础。

31 31

Page 33: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

图 2:IDC 对企业 IT 系统管理未来发展趋势的分析

当然,企业系统管理的管理目标和管理功能也是不断发展、变化的,从上图 IDC 对企业系统管理发展

趋势的报告,我们可以看到,企业系统管理的目标,已经由进行个别资源监控、系统及网络管理、应

用可用性方面阶段,正向着业务流程的优化方向发展;企业系统管理工具的功能,已经从数据收集、

发现、状态监控、配置管理、实时性能监控,向着历史数据分析、决策分析、自动响应和高度容错方

向发展。

2、 银行数据中心系统管理现状

目前银行数据中心通常已经建立了比较先进的运营管理体制,但以下因素还是给有效的运营管理带来

了一些困难:

1) 银行目前 IT 环境复杂,各种机器多,涉及到的部门多,造成了管理复杂度高

2) 没有完善的分层管理体制,管理分工不明确。

3) 难于端到端的管理,端到端是指从发起交易的开发平台端经骨干网到核心主机系统平台端的整个环

节。由于目前主机的管理与开放系统的管理分别由不同部门负责,管理工具之间也难于进行集成,

因此还没有达到端到端的管理目标。

4) 系统管理与管理流程结合不够紧密,还需进一步完善

在这种情况下,银行迫切需要对其 IT 环境进行有效的系统管理,通过集中监控和关键业务应用的监

控,来确保业务的正常运行。

银行在构建系统管理基础架构时,首先力求监控管理的深度和广度,涵盖对各种 IT 资源的监控管理,

做到管理无死角。再有,充分地考虑了各个管理工具的集成性,并与实际管理流程相结合。

3、 银行系统管理的实现

银行数据中心的系统通常以 IBM 主机为主、分布式 UNIX 作为前置机的应用架构。主机系统运行的正

常与否将直接影响到银行日常业务。因此做到对主机系统加以有效的监控管理,并消除将来可能发生

故障的隐患对于运营管理来说至关重要。但全国骨干网和各分行的前置机管理也非常重要,因为无论

哪个环节的故障,都会直接造成银行业务的重大损失,因此从银行 IT 管理角度来看,需要具有端到端

的管理能力,对支撑业务运行的重要资源进行管理。

目前银行数据中心建设采用了高度集中的业务处理、控制和运营模式,使得银行的整个系统体现出明

显的层次性,具有与以往不同的管理模式和管理需求。同时,各分行还有很多本地关键应用运行以支

持银行的本地业务。

32 32

Page 34: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

银行的业务模式对信息系统要求有更高的可靠性,以保证银行为用户提供的服务质量。这就对整个系

统和网络的管理能力以及管理模式提出了很高的要求。要保证为用户提供良好的服务水平,银行系统

管理的基础目标是对系统进行端到端(大中心—全国网络—分行关键应用服务器)的可用性管理。运

营管理需要对管理数据中心的资源和支持核心业务的全国骨干网以及分行关键业务服务器进行全面管

理。

银行数据中心的 IT 系统管理建设实施一直伴随银行 IT 系统的发展而发展,在不同的阶段实现了不同

的管理需求和管理目标,同时管理流程的建立也从整个系统管理设计的初始阶段就开始逐步形成以不

断完善。

目前国内银行数据中心已经具备了对于主机操作系统,网络,CICS 子系统,数据库等核心子系统以及

前置机的监控能力,并实现了系统自动化,网络自动化等自动化操作流程。上述各个方面的管理在功

能上来看相对独立,必须考虑整体管理的集成性问题。因为银行如此规模的 IT 系统需要的不仅仅是管

理工具,而是建立适合银行结构和管理需要的管理体系结构,以支持银行企业级的 IT 运行支持需求。

而且从职能上来看,数据中心需要对全国进行 IT 资源的统一支持,因此从管理结构上必须统一规划,

以实现统一管理。

从集成的角度中来看,主要有几个方面: 1) 建立银行统一的管理系统平台,在此平台基础上,集成各种管理功能,为管理员提供一致的操作平

台。该系统平台提供整个管理系统需要的安全性、信息共享、权限分工等基础服务,并能够整合所

有管理功能。

2) 需要建立统一的故障管理,设立统一的故障控制台,以集成各种管理应用的故障事件。

银行数据中心的系统管理有很多管理功能,每个管理功能对发现的资源问题都会以事件方式进行报

告,往往事件之间会有关联。因此需要一个统一的故障管理系统,能够收集各个管理应用的事件,

并按照需要进行事件分类。通过一个统一的管理控制台,可以看到所有系统的故障信息,同时可以

根据管理员职责的划分,设立相应的管理界面,监控其管理范围内的故障。

在统一的故障采集基础上,可以对故障进行自动化处理以及相关分析,以过滤不重要的事件,或找

到相关事件的根源事件,以提高故障管理的效率。

3) 建立统一的监控平台,以对各种资源的状态进行监控,并且能够看到资源状态之间的影响。

在统一的监控平台上,能够看到银行数据中心系统的状态变化,当管理资源发生变化时,会直接在

监控平台上显示出来。同时在监控系统中,可以定义资源之间及其与业务的关系,当资源发生变化

时,可以显示出此变化对业务的影响。

4) 建立统一的问题管理系统和技术支持系统,对各种系统报告的问题进行支持。

银行系统在运行过程中,势必会遇到各种问题,既有技术上的、也有各级用户使用上的。以往常常

依赖于传统的手工故障登记和处理、这样做既没有持久性,又无法直接对数据进行量化分析,故障

解决的经验无法得到保存和利用,这样的流程已不能满足银行整个系统建立、维护的需要。所以将

系统的监控、故障的登记和解决形成一个有效的整体,建立灵活自动的故障处理流程是十分必要

的。同时还包括故障的登记、故障的自动报警、解决方法的经验积累和自动检索等。

由于各种管理系统往往最快发现系统发生的事件,因此当管理系统发现问题时,需要由能力将问题

记录发送到问题管理系统中进行集中的问题解决。支持中心的技术人员在接收到问题报告后,可以

直接查询解决方案,或者将问题转发给相关人员。在问题处理后,会将信息通知管理系统,更新管

理系统中的故障记录。

在目前管理系统建设的同时,需要考虑到未来管理功能、管理范围的扩展,因此整个管理系统的建设

应该是统一规划设计,分阶段进行实施。在现阶段管理系统的建设过程中,最重要的管理目标为确保

系统的可靠稳定运行,所以现阶段的管理功能以可靠性管理为主,同时在管理功能实施的同时,建立

银行系统管理的结构。因此现有管理系统的体系设计时,既要满足现在的管理需要,实现对大中心、

网络和重要服务器的管理,又要兼顾未来的扩展,保证现有体系能够扩展管理功能、并扩展管理范

围。

33 33

Page 35: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

未来银行在保证系统可靠性的基础上,会逐步的增加其他管理功能,以提高管理效率和服务水平,而

这些管理功能会在现有的管理系统上进行扩展,无需对管理系统进行大的调整,以保护银行在系统管

理的投资。

从系统监控管理角度来看,通常分为三个层次:

集中监控业务视图, 业务流程集成

综合分析, 预测, 优化, 分析, 统计, 报表

事件相关性和自动控制跨系统和域进行故障根源分析

• 快速回报

• 开放架构

• 面向复杂的系统环境

• 即装即用

• 便于使用

• 将IT架构的价值现实化

• 全面集成的方案

• 高品质

资源监控发现, 采集数据, 探针 ,

本地性能分析, 过滤, 集中, 故障根源分析, 自动修复

第一层:系统与应用监控管理层

操作系统、中间件、数据库、存储设备和应用的监控管理主要对各应用系统服务器及其上的中间件和

应用的状态和其日志,以及与服务器相连接的存储设备的状态进行监控和检查,以保证系统的正常运

行,提高系统可用性。可用性管理主要有两种方式:

通过预警方式,在问题方式之前进行报警,使管理员能够及时干预,防止问题真正发生。因此会对

各应用系统主要服务器重要参数和进程进行监控,并设置门限值,在监控到超过门限值时进行报

警。

在问题真正发生时,通过最快的报警,使管理员在第一时间内获取故障信息,并及时采取措施,使

系统受到的损失降到最低。 1) 主机操作系统的监控

目前银行具备了实时监控 z/OS 系统资源性能的能力。有能力侦测出设备、应用程序、CPU 和内存系统

性能的降低。包括从设备、应用程序、CPU 和内存的角度观察性能的降低。

提供了对于工作负载功能的监控。对于一个系统,真正决定系统性能的不是单个交易的处理速度,而

是大量工作负载的处理能力。监控的范围覆盖所有硬件、软件:CPU 处理器、I/O 设备、存储动作及存

储设备的使用率、资源的消耗、以及地址空间的动作及性能。 2) 中间件应用的监控

这里主要指银行主机所采用的 CICS 交易中间件的监控管理。 对于 CICS 而言,需要在线监测 CICS 的性能,采用 CICS 的实时性能管理、监测及故障发现和修复工

具。

CICS 监控会搜集来自所有 CICS 系统、资源和任务的测量数据。管理员可以从单一的访问点-查询来自

多个 CICS Region 的数据,可以实时查看到:

监控状态 显示警报和它们近期的历史信息

定义和修改阈值 3) 主机网络的监控

对于主机网络通讯系统而言,主要网络设备的健康状况至关重要。其中包括数据中心以主机为核心的

SNA 网络,也包括连接全国的 IP 骨干网。银行的网络管理对 SNA 和 IP 网络进行全面监控,及时对网

34 34

Page 36: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

络问题进行响应,以保证网络的可靠运行。同时了解网络性能,保证网络提供快速、高效的服务,也

为网络优化和扩容提供依据。

在整个数据中心的建设过程中,网络是整个系统的血管部分,所以网络管理是整个系统管理的基础,

根据银行网络的实际情况,网络管理达到了以下几点:

对 SNA 和 IP 网络的统一管理、统一的拓扑图、统一的事件管理

网络故障的定位,较为智能的分析手段 网络管理的自动化,自动的故障恢复能力

4) 数据库的监控 银行核心应用采用的数据库为 DB2 数据库,因此对 DB2 数据库的监控将至关重要。目前银行具备了以

下能力:

对数据库的实时监控将通过提供全面多样的分析性能、利用率和可用性的报表来帮助提升 DB2 系

统的性能。

包括监测报告、Fast Path 日志报告和新的交易流量报告;

包括改善的在线界面和易用的文档; 提供管理 DB2 资源和系统性能所需的所有信息

第二层:事件关联和自动化管理层

对于银行应用系统来说,网络、设备、各前置系统、数据库系统、中间件、各种应用程序都会产生各

自的事件,在系统出现故障时,故障信息通过事件的方式显示在管理员的控制台上。对于大型网络系

统,一个系统管理员往往要面对成百上千个不同的事件,负担很重,而且,由于事件量大,关系不清

楚,管理员很难在众多事件中分出事件的重要程度,难以把重点放在对关键事件上,同时,也难以对

问题进行准确的分析。由于各种事件,如网络、系统、数据库、应用的事件之间有相关性,因此对事

件进行统一处理可以大大提高管理效率,加快故障分析定位和故障处理,降低由于系统故障带来的损

失。

当数据中心每天需要处理大笔交易时,对应用问题的状态、提醒、警告和行动都会超出操作员可以正

确执行的范围。所有进入数据中心的不能出错,数据中心的运营一定要在高度自动化的前提下,有严

明的纪律和既定的流程作保证。

由于数据中心的应用内容复杂,以及处理能量规模庞大,因而造成系统内任何时间内可能发生的状况

十分复杂以及发生速度亟快。在这种环境之下,以人工来处理系统操作的情况已经无法完全满足实际

情况的需要。

因此,在数据中心的环境中,需要一个定义严格、设计完善、和认真实施的自动操作机制来帮助系统

运行以及处理运行过程中产生的问题。这样的自动机制目的在于尽量免除人工操作和降低操作员对故

障恢复过程的人工干预。自动操作机制将不断的把握系统运行情况,并把预先定义有必要显示的信息

及时自动显示,但只有在绝对必要时,才会警告操作员会通过多种方式如寻呼机或人工合成的广播传

给操作员,提醒他处理紧急事件。

另外的一点是在日常的运营中,自动操作机制对远程设备有相当程度的控制能力。这点是十分关键的

因素:使用系统自动操作机制,可以节约时间的,可以减少对设备和人力的需求,以及大幅度的提高

系统整体的可用性。 1) 系统自动化

目前国内银行的系统自动化管理实现了对 z/OS 系统自动化监控,提供并行系统耦合体(Parallel Sysplex)管理、自动化能力和集成系统及网络管理。具备了单点监测、控制和自动操作各种软硬件系

统资源的能力。实现了自动化 IPL、检查和答复信息,并按设定的阈值启动和关闭应用及监控资源和

资源性能。

系统自动化管理可自动执行很多系统的控制台操作和操作员选择执行任务,如开机、监视、恢复或关

闭 z/OS 子系统、构件及应用(包括 VTAM、RMF、JES2 或 JES3、TSO 等等)。系统操作还能够自动

传递操作员控制台的信息,根据行为启动计时器和避免出现 z/OS 的关键资源短缺现象。

35 35

Page 37: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

2) 网络自动化

目前银行根据每种网络环境预定义的政策对资源进行监视并对发生了故障的资源进行恢复,最大限度

地减少故障对于业务的影响,如当发现 LU 会话断开后,可以自动重起 LU 会话。

在 SNA 和 TCP/IP 环境中,自动化功能可以通过监视网络设备的错误阈值对故障进行预防性的监视。

如果资源的恢复不成功,这种自动化技术可以向某一个人员发出传呼,开出一个故障“传票”或发送

一个电子邮件,提升故障的处理等级。

银行目前已在很多网络和系统操作实现了自动化,从而改善银行数据中心的系统和网络的可靠性和效

率。

第三层:业务影响与容量计划管理层

运营管理的目的是为银行业务系统服务,保障业务系统的可用性和性能。在管理过程中,系统管理软

件应能以业务为中心,显示业务服务视图,当主机(网络)设备发生故障时,能快速定位影响到的业务。

支持在业务服务视图上直接查看故障信息,在业务服务视图上直接执行解决问题的动作。此外,还需

通过服务水平管理可以监测银行运营管理的系统服务水平,做出未来趋势分析。

1) 性能与容量报告

决策支持管理将实现对各个管理模块收集和产生的管理数据的统计分析,帮助管理员从中发现有价值

的信息,并更全面的了解系统状况。决策支持系统从 SMF 记录中获取管理数据,进行计算和存储,生

成直观清晰的报告或图表,使管理员清楚的了解系统现状如何、可能有什么样的趋势,以及时采取管

理动作。

决策支持系统将负责各个管理系统信息的统计分析,包括:

- 网络性能管理信息

- 网络故障管理信息

- 系统性能监控信息

- CICS 系统管理信息

- DB2 数据库管理信息

- 记帐管理系统信息 决策支持系统提供企业内集中的系统报告,包括系统性能、网络性能、CICS 性能等图形报表。操作系

统与子系统产生大量原始性能数据,如何利用这些数据来分析系统的运行状况,提高服务水平。这就

需要一个高度有效的、兼容的解决方案来帮助跟踪系统性能和资源的利用,参与并解决问题,为将来

的资源需要提供计划。

收集到的主机上各种资源的性能数据,为管理人员进行性能瓶颈分析提供有力的支持。

提供大机作业系统的系统性能报表(包含MVS之各项资源CPU、 I/O、Memory等)。 提供大机作业系统的各项系统(如VTAM、CICS、DB2、DB2 等) 的各项使用状态,作业次数、时

间及错误/恢复的性能报表。

可结合批处理自动化功能,提供各项批处理时间、次数及各种资源使用的性能报表。 2) 问题管理流程支持

在数据中心这样高度集中的环境里,问题管理是很重要的。设计合理的问题管理流程和工具可帮助用

户解决面临的大量困难。

问题管理工具和流程保持对问题的跟踪,还可以把问题提交给更高的一级进行处理,保留问题的历史

数据库并提供必要的管理信息来对服务水准进行评估,协助作业流程进行,加快问题的解决,这样加

强了对用户的服务。

银行建立的服务支持中心管理系统,应该可以提供全面的问题管理、变更管理、资产管理流程解决方

案,帮助银行规范日常管理工作流程。并通过知识库的积累,保存银行的管理经验,提高管理水平。

由于管理与支持是密切相关的,因此管理系统与支持系统之间需要建立联系,管理系统发现的问题,

经过处理分析之后,能够自动或者手工生成问题故障单,传送给支持中心,在支持中心处理完毕后,

36 36

Page 38: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

可以关闭管理系统中的问题记录。同时管理人员在接到问题报告时,可以通过管理系统进行系统分

析、诊断等工作,以帮助进行问题定位,故障排除。 3) 业务影响管理

考虑到数据中心业务系统的所有业务组件及平台在业务系统的管理中可能缺乏集成和自动控制,业务

影响管理可以使数据中心消除在异构分布式系统之间以及分布式与主机系统之间可能存在的通讯障

碍,同时还可以使业务人员与 IT 技术人员更加易于沟通。

数据中心需要能从单一操作台上有效管理整个业务系统的工具,而不需要了解具体业务组件运行于哪

个平台上。此业务系统应可扩展到桌面平台、客户端/服务器端及主机平台。

通过统一的监控平台,能够监控到银行数据中心的系统状态变化,当管理资源发生变化时,会直接在

监控平台上显示出来。同时在监控系统中,可以定义资源之间及其与业务的关系,当资源发生变化

时,可以显示出该变化对业务的影响。

面向业务系统端到端管理作为运营管理的最高目标,它提供了对企业级的技术资源、应用和子系统的

状态及事件的管理,实现企业级的监控,保证系统的连续可用性。确保银行能从业务管理的观点管理

银行的应用,并快速确定一个组件故障所造成的业务影响。

业务系统管理使银行完成分布式管理与主机管理集中管理。即使业务系统涉及到多平台,它也可以使

银行图形化统一监控相关联的业务组件和操作系统资源。此外,业务系统管理还应具备与其它管理产

品良好的集成能力,可与其它管理产品一起帮助银行管理业务组件和基础架构。

运营管理的目标是对业务系统进行管理。通过业务影响管理,银行可以统一监控网络、系统、应用的

状态,并显示任何一个部件出现问题对业务系统的影响,从而根据优先级采取措施。同时作为管理的

控制中心,能够集成主机和分布式管理的信息,包括各种管理应用,从而为银行提供统一的管理控制

台。

4、 银行数据中心系统管理的展望

新的管理技术和管理工具为未来数据中心管理水平的提高提供了可能,数据中心可以依据以下方面来

完善系统管理:

1) 更全面的监控覆盖

37 37

Page 39: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

系统监控将完全覆盖组成系统的每个方面,这包括监控的对象更加全面,如包括环境监控、复合型

SOA 应用监控等现在尚未覆盖的方面;还包括监控对象的深入,即提供更多的监控指标与监控内

容。

2) 更高的集成度

要实现端到端的监控,需要将组成服务的所有组件的监控进行集成。基于银行对未来系统的规划,

部署相应的监控组件,并与现有监控相整合;系统管理的各个方面,亦必须与监控相整合,如端到

端的系统自动化,端到端的批量作业调度,端到端的系统安全与合规性监管等,均会与系统的监控

整合到一起,从而提高系统的监控准确度与自动化程度。

3) 构建稳定的,可扩展的配置与变更数据库,完善地实施基于 ITIL 的流程管理

ITIL 的核心组件之一就是配置与变更数据库,这个数据库应具有强大的自动发现功能,能够基于

系统自身及监控组件,自动发现与建立配置项及相互关系的数据库,并可有效的与 ITIL 的其他组

件,如服务台等相结合。

4) 实施服务水平管理与监控

所有工作的目的,是提高系统的可管理性,以得到较高的服务水平。通过实施服务水平的管理与监

控,可以有效掌握和提高整个核心系统针对业务部门的服务能力,并有针对性的采取必要的行动。

38 38

Page 40: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

百硕客户通讯 BAYSHORE ADVISOR 中国主机用户专享的资讯季刊

2008 年 6 月 1 日出版(总第 12 期)

主办:百硕同兴科技(北京)有限公司

出版:百硕客户通讯编委会 吕宁 李琰

马彤雷 王晓兵 刘京平 吴笳笳 张凤华 陈银波 陈建 邹杰

罗文军 贺明

徐卫华 高春霞 高大川 高玉超 郑霞

康会影 Darryn Salt Martha Hall

地址:北京市朝阳区望京科技园利泽中二路 1 号中辰大厦 209 室 电话:010 64391733 传真:010 64391582 电子邮箱:[email protected]

如果您对百硕客户通讯有任何意见和建议,欢迎您随时与我们交流!

39 39

Page 41: 百硕客户通讯,总第 - bayss.com · CICSPLEX 提供了Named Counter,它可以为CICSPLEX 全局提供一个唯一的序列号。这个序列号被用户程序访问一次后会自动加“1

百硕客户通讯,总第 12 期(2008 年 6 月 1 日)

40 40

百硕客户通讯总第 12 期 (2008 年 6 月 1 日) 百硕同兴科技(北京)有限公司 Bayshore Consulting & Services Co., Ltd.