百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3...

43
百硕客户通讯,总第 19 期(2010 3 1 日) 1

Upload: others

Post on 22-Sep-2020

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

1

Page 2: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

2

Page 3: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

3

DB2 Version X 百硕外籍技术专家 Tony Childs Introduction Since DB2 was first launched in the 1980s, IBM has released a new version about every 3 years. DB2 Version 9 was released in 2007 so it is not too surprising, that now in 2010, IBM has started to talk about the next version of DB2. In the available IBM documents, the next version is called DB2 X. Whether this will actually be the launched name, we will have to wait and see. For those that might not know Roman numerals, X is the Roman numeral for 10. IBM has issued some information on the likely enhancements, new and discontinued features and pre-requisites of DB2 X. This article provides a summary of the information available so far. In all the documents issued to date, IBM has stressed that DB2 X is still in the development process and the actual content of DB2 X has yet to be decided. Please bear this in mind when reading this article. Performance Improvements IBM has stated their goal is to reduce the CPU usage of DB2 X by 5 to 10% when compared to DB2 Version 9. For those customers currently using DB2 Version 8, if IBM delivers this level of CPU reduction, migrating to DB2 X would result in CPU usage reductions in the 10 to 20% range. DB2 X will also deliver improved performance by enhanced exploitation of real memory and System Z hardware optimization. DB2 X will provide significant virtual storage constraint relief (VSCR) by moving many storage pools above the 2Gbyte bar. The VSCR delivered will allow a substantial increase in the number of concurrent threads per DB2 subsystem and associated improvements in throughput. These performance improvements may enable some installations to actually reduce the number of DB2 subsystems in their data-sharing groups and, even the possibility, of reducing the number of LPARs. DB2 X will deliver improved application performance by enhancing SQL runtime efficiency. These improvements will include:

• Parallel index update when inserting rows, • Faster single row retrieval, • INSERT improvements for Universal Tablespaces (UTS), • Index List Prefetch • More efficient processing of OR and IN predicates

Page 4: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

4

• Greater use of workfiles to avoid tablespace scans

Application performance improvements may also be delivered by exploiting new features that will make it possible to manually override SQL access paths chosen by the DB2 optimizer without changing SQL by providing ‘hints’. DB2 X will also allow BIND options to be supplied for individual SQL statements. This will allow greater control over specific SQL statements that are causing problems without having to compromise the best choices for other SQL statements. A constant issue in DB2 has been the performance impact of RID overflows. In DB2 X RID Overflow handling will use workfiles. This will deliver performance improvements when index list prefetch is required by the optimizer, but the RID pool isn’t large enough to handle the number of index records. Availability Enhancements Online REORG has been enhanced to enable more changes to be applied to tablespaces, tables and indexes using Online REORG. The enhancements to Online REORG will enable DB2 X to deliver improvements in availability by reducing the length and frequency of planned outages. It will be possible to use Online REORG instead of DROP/CREATE and REBUILD INDEX to implement changes to:

• Page size • DSSIZE • SEGSIZE • MEMBER CLUSTER

It will also be possible to use Online REORG to convert:

• Single table segmented tablespaces to ‘Partition by Growth’ Universal Tablespace (UTS) • Partitioned tablespaces to ‘Partition by Range’ UTS • UTS ‘Partition by Range’ to ‘Partition by Growth’

Online REORG has also been enhanced to deliver:

• Improved overall runtime to complete a REORG • Provide more information on estimated run times for each phase of the REORG • Allow SHRLEVEL CHANGE for LOBs. • Ability to cancel blocking threads • Faster SWITCH phase

To further reduce the number of administrative tasks that restrict access there will be an online facility to add an active log. Utility Enhancements

Page 5: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

5

DB2 X will deliver a variety of improvements to the IBM-supplied utilities. The UNLOAD utility will be enhanced to support spanned records for LOB unloads, extend support for UTF-16 and deliver enhanced performance especially for LOB Unloads. There will be enhancements to FlashCopy support to provide:

• Dataset level FlashCopy, • FlashCopy backups with data consistency and no application outage, • FlashCopy backup input to RECOVER, UNLOAD, COPYTOCOPY, DSN1COPY

Other utility enhancements include:

• A ‘back to’ log point recovery • REPORT RECOVERY to provide support for system level backups • RUNSTATS to support auto stats.

Security Changes There are several changes to DB2 security features that will deliver enhanced business security. Compliance needs will be addressed by providing facilities to enable tasks to be split into the 4 recognised security-related tasks:

• System Administrator Tasks • Security Administrator Tasks • Access Control Tasks • Auditing Tasks.

In DB2 X it will be possible to restrict the data access rights associated with privileged DB2 users. In particular, it will be possible to grant the SYSADM privilege without granting access to the data within the DB2 objects. There will be separate authority to perform security related tasks so privileged users, such as SYSADM, will no longer have access to DB2 security features. There will also be a new AUDIT privilege. A new EXPLAIN authority will allow users to perform an EXPLAIN without granting EXECUTE authority. The security access controls will be enhanced to provide fine-grained access to the data. This will allow the masking of values of sensitive data and restrict user access to particular cells of data. Timestamps IBM documents state that DB2 X timestamps will have greater precision, but at present it doesn’t state exactly what this means and what effect, if any, it will have on timestamps from earlier versions of DB2. There will also be a timestamp with time zone feature.

Page 6: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

6

There will also be a feature where an application can distinguish between a business timestamp and a system timestamp. A row can be defined with business timestamps or system timestamps or both business and system timestamps. The business timestamps will enable an application to determine for every row in a table, the start and end timestamps when, from a business prospective, the row is valid. This could be useful in situations where business parameters, such as interest rates, are changed in advance of their effective business validity. SQL queries can be used to retrieve data for current, past and future business periods. The system timestamps are set by DB2 and will show the timestamp when the row was inserted into the table and the timestamp when the row was modified. SQL queries will be able to retrieve current data and any prior period. These timestamps could be used for auditing and compliance procedures. Application Development There are several new application features and enhancements. The available documentation doesn’t give much more information on these features than just bullet points at the moment. Presumably over the next few months more details will emerge. LOBs Enhancements

• non-NULL default values for inline LOBs. • LOAD and UNLOAD on tables containing LOBs.

XML Enhancements

• New CHECK XML utility. • XML schema validation for improved performance and usability. • Binary exchange format for improved performance. • Multi-versioning. • Easier update of sub-parts of an XML document. • Enhanced support for XML in stored procedure, user-defined functions and triggers. • XML index matching with date/timestamp. .

SQL Enhancements

• There will be MOVING SUM and MOVING AVERAGE features. • Special null indicator to indicate value not supplied or default

Discontinued Functionality DB2 X will see several features discontinued that are available in DB2 Version 9 and earlier.

• Plans that have not been rebound since DB2 Version 5 or earlier will have to be rebound if they are to be used in DB2 X. Since DB2 Version 5 was launched in 1995, it seems unlikely that there will be many of these plans.

Page 7: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

7

• Plans containing DBRMs will have to be converted to use packages when they are rebound. Plans containing DBRMs that are not rebound don’t have to be amended to use packages, but this could lead to problems if there was a need for an emergency rebound. Also IBM has stated that the intention is to no longer support plans with DBRMs from DB2 X+1.

• The ACQUIRE(ALLOCATE) BIND option will no longer be available. ACQUIRE(ALLOCATE) should only be used rarely in the current releases. ACQUIRE(ALLOCATE) should be replaced with ACQUIRE(USE).

• DB2 manuals will no longer be supplied in BookManager format. Instead the DB2 Info Centre should be used or access the Adobe Acrobat format of the manuals.

• DB2 X will not provide support for Private Protocol Distributed Access. Private protocols must be replaced by the DRDA facility.

• The XML Extended feature will no longer be available. XML must be stored in the XML data type first introduced in DB2 Version 8.

• DB2 MQ XML user-defined functions and stored procedures must be replaced by XML functions.

Pre-Requisites At present definite pre-requisites have not been stated, but IBM have said that the likely pre-requisites will be:

• z/OS v1.10 • DB2 Version 9 in NFM Mode • Z890, z990, z9, z10 or higher • DFSMS required for DB2 Catalog

What happens next? On February 9th IBM announced the DB2 10 for z/OS Beta program will launch on March 12th 2010. The first thing to notice is that the launch letter refers to DB2 Version 10, so now we know that the new version will be called DB2 Version 10. During the Beta Program a small number of DB2 clients, selected by IBM, undertake to install and test the new version of DB2. The program is intended to identify problems in key areas of the new version. In particular:

• Installation and migration procedures • Identifying Software bugs • Compatibility Issues with existing application and system software • Use of new functionality • Performance Issues • Documentation

Based on the feedback from the Beta Program, IBM will review the results and address the issues discovered. IBM will then make a final decision on what to include in the product.

Page 8: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

8

Once all issues arising from the Beta Program have been addressed, IBM will make a General Availability announcement that will include details of when the new version is available to all DB2 customers along with all the technical details and the license costs. Summary So it seems there are a lot of enhancements in DB2 10 for performance, security, availability and several interesting new features for application developers. What do you need to do to take advantage of the new features and enhancements in DB2 10?

• If you are currently on DB2 Version 7, or earlier, you should plan to migrate to DB2 Version 8 as all versions of DB2 before Version 8 are no longer fully supported by IBM.

• If you are currently on DB2 Version 8 plan to migrate to DB2 Version 9. To migrate to DB2 X you must be on DB2 Version 9 NFM.

• If you are using PLANs with DBRMs directly bound into the PLANs, you should prepare to migrate to binding DBRMs into PACKAGEs.

• If you have any PLANs that have not been rebound since DB2 Version 5 or earlier, then prepare to REBIND those PLANs.

• Change PACKAGEs bound with ACQUIRE(ALLOCATE) to ACQUIRE(USE). • If you are using XML Extender plan to migrate to XML data type. • If you are using private protocols for distributed DB2 plan to move to the supplied DRDA

facility. • If you use BookManager to access DB2 manuals and other documentation, start using the

web-based DB2 InfoCentre. • You should review the levels of z/OS and SMS that you are currently using. • Watch out for more information regarding pre-requisites and release information from

IBM and, also, in future editions of Bayshore Advisor. Again it must be emphasized that everything in this article is based upon IBM documentation describing the proposed contents of DB2 10. There is no guarantee that anything mentioned in this article will definitely be in DB2 10 when it is eventually announced.

Page 9: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

9

巧用 PIPE 获取 Netview SA Muti-line msg

百硕工程师 牛文灿 在监控项目中,通常要捕获主机端产生的告警信

息,然后根据告警级别做不同的展现,从而达到提示、告警的目的。原理上我们可以通过

在 Netview SA 的 MSG TABLE 中做特定的设置,比如设定特定的 MSG ID 和相应的程

序,一旦主机触发该 MSG,SA 会自动触发事先设定的 REXX 程序,从而捕获该信息的

JOBNAME、MSGID 和 MSGBODY。

针对具体的 MSG、MSG TABLE 中有关 MSG ID 和触发程序的设置示例如下: IF MSGID = msgid & TEXT = message & JOBNAME = jobnm

THEN

EXEC (CMD('program ' jobnm' 'message) ROUTE(ONE %TESTMONOPER%))

NETLOG(Y) DISPLAY(Y) CONTINUE(Y);

msgid 代表系统触发的告警信息的 MSG ID

message 代表 MSG BODY

jobnm 代表哪个 SUBSYSTEM 触发的 MSG

program 代表系统触发该 MSG 后自动调用的 REXX 程序

TESTMONOPER 代表 Auto Oper Group,内部包含事先定义的 Primary Operator 和

Backup Operator。

Program 用 REXX 来写: /*REXX*/

PARSE ARG JOBNM PARM

SAY ‘MSG =’JOBNM’#’||PARM

IF LENGTH(PARM) <=0 THEN DO

SAY "PARM IS EMPTY"

EXIT(110)

END

创建一个测试信息程序 TESTWTO,目的是调用 WTO 函数生成测试的 MSGID 和

MSG BODY,将此程序拷贝到 SA CLIST 中。 /*REXX*/

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

/*-------------------------------------------------------------------*/

/* Check for option parameters */

/*--------------------------------------------------------------------*/

Trace O

/*--------------------------------------------------------------------*/

/* Begin Main Processing */

/*--------------------------------------------------------------------*/

Parse Arg cmdline /* Comment Bracket */

WTO cmdline

/* Comment Bracket */

Exit /* Call Final Exit Routine */

Page 10: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

10

MSG TABLE 中将 MSG ID 设定为 IEFTESC,定义完毕后生效 AUTO OPERATOR,BUILD SA POLICY,REFRESH 生效 NETVIEW SA 参数,发命令 /SA39 TESTWTO IEFTESC 111111,在 SA LOG 中能够看到: MSG = SA390#IEFTESC 111111

说明设置成功。

但是测试过程中发现一个严重的问题,MULTI-LINE MSG 情况下 NETVIEW 无法抓

取完整信息。比如以命令‘D IPLINFO’产生的信息为例,在 MSG TABLE 中将 MSG ID设定为 IEE254I,这时候在 SDSF 中发这个命令,会在 SA LOG 中抓到的信息为 MSG = IEE254I#IEE254I 16.09.45 2010.019 ACTIVITY 003

也就是说,NETVIEW SA 只能抓到多行信息中的第一行,而其余的则被丢弃。

在 SYSLOG 中能够看到这则 MULTI-LINE MSG,如下图所示: NC0000000 BQ03 10019 17:48:10.55 IBMUSER 00000210 D IPLINFO

MR0000000 BQ03 10019 17:48:10.57 IBMUSER 00000010 IEE254I 17.48.10 IPLIN

DR 342 00000010 SYSTEM IPLED AT 16.18.

DR 342 00000010 RELEASE z/OS 01.09.00

DR 342 00000010 USED LOADQ1 IN SYS1.IP

DR 342 00000010 ARCHLVL = 2 MTLSHARE

DR 342 00000010 IEASYM LIST = SA

DR 342 00000010 IEASYS LIST = (SA) (OP

DR 342 00000010 IODF DEVICE 3DE3

ER 342 00000010 IPL DEVICE 1DC2 VOLUME

其中类型 M、D、E 的解释如下: M = multi-line WTO (MLWTO) message header

D = multi-line WTO (MLWTO) data message

E = multi-line WTO (MLWTO) end indicator

只有 M 类型的信息才能被 NETVIEW 获取,其余信息则被舍弃,这导致无法完整抓

取多行的告警信息。解决方法是在 REXX 程序中执行 PIPE SAFE JOINCONT 命令,将所有

的 MLUTI-LINE WTO MSG LOAD 到变量 DATA 中。 PARSE ARG JOBNM PARM

'PIPE SAFE *',

'|SEP',

'|JOINCONT // / /',

'|VAR DATA'

PARSE VAR DATA PARM

SAY ‘MSG =’JOBNM’#’||PARM

IF LENGTH(PARM) <=0 THEN DO

SAY "PARM IS EMPTY"

EXIT(110)

END

简单解释下这段程序:

PARSE ARG JOBNM PARM:拿到触发该信息的 SUBSYSTEM 名称,这时候 PARM中拿到的是 MULTI-LIME MSG 的第一行信息。

'PIPE SAFE *' 创建一个默认的 SAFE,SAFE 的作用是存储与 REXXC 程序相关的所

有信息,包括单行信息和多行信息。

Page 11: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

11

'|SEP' 是将多行信息转换为多个单行信息。

'|JOINCONT // / /' 将包含 NULL 和空格字段的数据流连接在一起。

'|VAR DATA' 将整合好的连续数据流放到变量 DATA 中。

有关 PIPE 编程的进一步介绍,可以参看《Customization: Using Pipes》这本书。

程序修改后拷贝到 SA CLIST 中,REFRESH 生效 NETVIEW SA 参数,执行‘D IPLINFO’命令,SA LOG 中能够看到: MSG = IEE254I#IEE254I 17.48.10 IPLINFO DISPLAY 342 SYSTEM IPLED AT 16.18.17 ON 11/09/2009

RELEASE Z/OS 01.09.00 LICENSE = Z/OS USED LOADQ1 IN SYS1.IPLPARM ON 3DE3 ARCHLVL = 2

MTLSHARE = N IEASYM LIST = SA IEASYS LIST = (SA) (OP) IODF DEVICE 3DE3 IPL DEVICE 1DC2

VOLUME WKRSC1

说明完整捕获 Multi-line 信息。

总结:通过上面的小例子,能够看出在特定环境下,简短的 PIPE 程序能够发挥“威

力”。希望这篇短文能够丰富大家的思路,并起到抛砖引玉的作用。

Page 12: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

12

如何编程与 REXX 进

行参数传递

百硕高级工程师 陈银波 REXX 是一种简单而强大的解释性语言,而

且非常易学易用。在日常的主机维护中,甚至在应用开发中,经常会选择 REXX 来完成一

些工作。随着 REXX 使用越来越普遍,相信大家也会遇到一些特殊任务,需要用 REXX来调用其它语言模块。而为了让 REXX 与其它语言模块互相协调工作,就首先需要了解

REXX 与其它不同的语言模块之间实现参数传递的编程方法。本文就是介绍了 REXX 分别

调用 COBOL、C、ASM 程序模块时,是如何通过编程来进行参数传递的,希望对大家的

工作有所帮助。

REXX 如何调用其它语言程序

REXX 在执行一条 EXEC 语句时,其实是将该语句交给 HOST COMMAND ENVIRONMENT 去真正执行。不同类型的 EXEC,需要不同的 HOST COMMAND ENVIRONMENT。REXX 中的 HOST COMMAND ENVIRONMENT 有以下这些:

TSO MVS LINK LINKMVS LINKPGM ATTACH ATTACHMVS ATTACHPGM ISPEXEC ISREDIT CONSOLE CPICOMM LU62 APPCMVS

能正确调用 COBOL 、 C 、 ASM 程序并进行参数传递的 HOST COMMAND ENVIRONMENT 有 LINKMVS、ATTACHMVS、LINKPGM 和 ATTCHPGM 四个。

调用这些语言程序时,可以使用以下类似的命令: ADDRESS LINKMVS 'TESTPGMA var1 var2 var3'

ADDRESS ATTCHMVS 'TESTPGMB var1 var2 var3'

ADDRESS LINKPGM 'TESTPGMC var1 var2 var3'

ADDRESS ATTCHPGM 'TESTPGMD var1 var2'

Page 13: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

13

不过按照参数传递时组织方式不同,我们将它们分成如下两类: LINKMVS 和 ATTACHMVS LINKPGM 和 ATTACHPGM

以下是它们传递参数时的区别。

通过 LINKMVS 或者 ATTACHMVS 传递参数时,参数的组织格式如下:

图一

通过 LINKPGM 或者 ATTACHPGM 传递参数时,参数格式组织如下:

Page 14: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

14

图二

注意:R0 是寄存器 0。R1 是寄存器 1。High Order Bit on 是用来判断当前参数是否是

后一个参数。一般情况下,我们都是知道传递参数的个数,所以不用判断该值。

从以上图表可以看出 ATTACHMVS、LINKMVS 进行参数传递时,系统会在每个参

数的启始位置增加表示参数长度的域,有两个字节。而 LINKPGM、ATTACHPGM 则没

有。在编程接收 REXX 参数时需要注意它们之间的区别。

另外,REXX 能将参数传递给其它程序,其它程序也能通过修改相应的参数值将数据

返回给 REXX。

REXX 调用 COBOL

REXX 调用 COBOL 程序时,不仅能够将数据通过参数传递给 COBOL 程序,而且

COBOL 也能将数据通过参数传递给 REXX。另外,在 COBOL 中 RETURN-CODE 的值也

能反映到 REXX 中的 RC 变量。

调用 COBOL 时,既可以使用 LINKPGM,也可以使用 LINKMVS。但是如果使用

LINKMVS 时,就需要考虑每个参数前表示变量长度的两个字节。下面我们就以 REXX 通过 LINKPGM 方式执行 COBOL 程序的一个例子,来说明怎样通过编程实现参数传递。

以下为 COBOL 例程的源程序: IDENTIFICATION DIVISION.

Program-id. TESTCBL.

Page 15: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

15

DATA Division.

Working-Storage Section.

Linkage Section.

01 PARM1.

02 PARM1DATA PIC x(8).

02 PARM1DATA1 PIC s9(4) binary.

01 PARM2.

02 PARM2DATA PIC x(16).

01 PARM3.

02 PARM3DATA PIC x(4096).

Procedure Division

USING PARM1 PARM2 parm3.

DISPLAY '************************************'

DISPLAY 'PARM1:' PARM1DATA

DISPLAY 'PARM1:' PARM1DATA1

DISPLAY 'PARM2:' PARM2DATA

move 'data come from cobol program' to parm3data

move 8 to return-code.

STOP RUN.

该 COBOL 程序需要接收 REXX 的三个参数,前两个参数将在 COBOL 中通过

DISPLAY 打印,第三个参数则是 COBOL 向 REXX 传递数据使用的。所以,我们在

Linkage Section 中定义了 PARM1、PARM2、PARM3 这三个参数,其中 PARM1 参数中又

分成了 2 个定义,一个字符串和一个数字。同时,在 COBOL 的 Procedure Division 中使用

USING 语句,将需要进行数据交互的参数填写进去。这里我们使用了“USING PARM1 PARM2 PARM3.”。另外,程序通过 RETURN-CODE 设置了返回码 8。

以下是调用以上 COBOL 程序的 REXX 例程的源程序: /*rexx*/

parm1 = '12345678'||'0040'x

parm2 = 'abcdefghijklmnop'

parm3 = COPIES('00'X,4096)

ADDRESS LINKPGM 'TESTCBL parm1 parm2 parm3'

say 'RC:' rc

say 'PARM3:' parm3

exit

注意:TESTCBL 为以上 COBOL 程序编译后的可执行模块。

对应 COBOL 程序中参数的定义,REXX 中参数 PARM1 由两部分组成,8 个字节的

字符串和 2 个字节的 16 进制码(数值为 64)。参数 PARM2 是 16 个字节的字符串。参数

PARM3 是 4096 个字节值为 X’00’的字符串。

执行以上 REXX 程序,可以得到以下输出结果: RC: 8

PARM3: data come from cobol program

从以上结果可以看出: 数据 RETURN-CODE 生效了,因为 RC 值为 8。 COBOL 将数据通过第三个参数,传递给了 REXX。

COBOL 程序输出如下: ************************************

Page 16: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

16

PARM1:12345678

PARM1:0064

PARM2:abcdefghijklmnop

从 COBOL 输出可以看出,REXX 中前两个参数的值正确传递给了 COBOL 程序。

如果这里的 LINKPGM 换成 LINKMVS,那么在以上 COBOL 例程的参数定义中就需

要加入代表参数长度的 2 个字节的定义。例如: …

Linkage Section.

01 PARM1.

02 PARM1LEN PIC s9(4) binary.

02 PARM1DATA PIC x(8).

02 PARM1DATA1 PIC s9(4) binary.

01 PARM2.

02 PARM2LEN PIC s9(4) binary.

02 PARM2DATA PIC x(16).

01 PARM3.

02 PARM3LEN PIC s9(4) binary.

02 PARM3DATA PIC x(4096).

Procedure Division

USING PARM1 PARM2 parm3.

REXX 调用 C

由于 C 程序传递参数的特殊性,使得 REXX 调用 C 程序时必须使用 LINKMVS。而

且,REXX 调用 C 程序时,只能将参数值传入 C 程序,而无法将 C 程序中的数据通过参

数返回给 REXX。但是可以通过修改 C 程序的返回码,改变 REXX 的 RC 值。下面我们就

以 REXX 通过 LINKMVS 方式执行 C 程序的一个例子,来说明怎样通过编程实现参数传

递。

以下是 C 例程的源程序: int main(int argc,char **argv)

{

printf("argc:%d\n",argc);

printf("arg1:%s\n",argv??(1??));

printf("arg2:%s\n",argv??(2??));

return 1234;

}

在 C 程序中,必须这样定义主入口函数,int main(int argc,char ** argv),才能让

C 程序接收参数并能够有返回码。这里我们打算接收来自 REXX 的两个参数,并进行打

印, 后设置程序返回值为 1234。

以下是 REXX 例程的源程序: /*rexx*/

parm = '123 456'

ADDRESS LINKMVS 'TESTC parm'

say rc

exit

注意:TESTC 为以上 C 程序编译后的可执行程序。

Page 17: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

17

在这里可以发现,REXX 传递参数给 C 的时候,只需要定义一个变量,而需要传递的

参数值则需要在这个变量中以空格分开就行。不像调用 COBOL 程序,有几个参数就需要

定义几个变量。这里我们传递给 C 的两个参数值就是“123”、“456”。

执行以上 REXX 程序,可以得到以下输出结果: 1234

从以上结果可以看到,C 程序中的返回值可以通过 REXX 中的 RC 变量获取。

C 程序输出如下: argc:3

arg1:123

arg2:456

注意:C 语言中,将参数传递给 C 程序时,程序名也会作为参数传递给 C 主程序,并

放在 argv[0]中。

REXX 调用 ASM

REXX 调用 ASM 程序时,可以将参数值传递给 ASM,同时 ASM 也可以将数据通过

参数传递给 REXX。而且,调用时既可以使用 LINKMVS 方式也可以使用 LINKPGM 方

式,但是通过 LINKMVS 方式传递参数时,必须处理好每个参数前表示长度的两个字节。

另外,在 ASM 程序退出时在寄存器 15 中设置返回值,在 REXX 的 RC 变量中可以获取该

值。

REXX 调用 ASM 程序时传递参数很方便,和调用 COBOL 程序时一样。但是 ASM 程

序接收参数时,却不像 COBOL、C 程序那么简单,需要自己在 ASM 程序中根据参数组织

结构,通过寄存器去访问。根据上面图一、图二中所示的参数结构,我们可以发现,

REXX 传递进去的参数,可以通过 R1 寄存器访问,第一个参数地址存放在 R1 地址加偏移

量+0 的地方,第二个参数地址存放在 R1 地址加偏移量+4 的地方,依次类推以 4 为倍数,

我们可以得到所有参数的地址。

下面我们就以 REXX 通过 LINKPGM 方式执行 ASM 程序的一个示例,来说明怎样编

程进行参数传递。该示例将使用 REXX 调用 ASM 程序访问系统 CSVAPF 函数,获取系统

目前正在使用的 APF 程序列表,并打印。

以下是 REXX 例程的源程序: /* rexx */

WORKLEN = 64000

DWORK = COPIES('00'X,WORKLEN)

RET = '00000000'X;RSN = '00000000'X

ADDRESS LINKPGM 'LISTAPF DWORK RET RSN'

if(c2d(RET) <> 0) then exit(8)

/** total entry */

entrynum = c2d(substr(dwork,1,4))

say entrynum

/*** offset APF entry */

apfoffset = c2d(substr(dwork,13,4))

apfoffset = apfoffset + 1

Page 18: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

18

/* list entry */

do i = 1 to entrynum

apfelen = c2d(substr(dwork,apfoffset,2))

apfevolume = substr(dwork,apfoffset+4,6)

apfedsname = substr(dwork,apfoffset+10,44)

apfoffset = apfoffset + apfelen

say i apfevolume apfedsname

end

注意:LISTAPF 为 ASM 程序模块。获取 APF 列表时,需要调用系统提供的 CSVAPF函数。参考《MVS Data Areas Vol1》中的 CSVAPFAA 章节,可以了解 CSVAPF 函数及返

回结果的格式。

在 REXX 程序中,我们将传递三个参数给 LISTAPF,第一个参数为 DWORK,是一

个长度为 64000 字节的字符串,用来存放 LISTAPF 获取到的 APF 列表。第二、第三个参

数分别是 RET 和 RSN,用来存放系统函数 CSVAPF 的返回码和原因码。接下来,看看

ASM 程序如何接收这三个参数,并将数据返回。

以下是 ASM 例程的源程序: TITLE 'LISTAPF - LIST SYSTEM APF Entrys'

LISTAPF CSECT ,

LISTAPF AMODE 31

LISTAPF RMODE ANY

STM 14,12,12(13)

BALR 12,0

USING *,12

LR 8,1

STORAGE OBTAIN,LENGTH=WORKLEN,ADDR=(10),LOC=ANY,OWNER=PRIMARY (1)

LR 11,1

using WORKAREA,11

MVC APAALEN,=AL4(64000)

LA 5,DSWORK

CSVAPF REQUEST=LIST,ANSAREA=(5),ANSLEN=APAALEN, X(2)

RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,CSVAPFPL)

LR 1,8

L 2,0(1) (3)

L 3,APAALEN

LR 6,5

L 7,APAALEN

MVCL 2,6

L 6,retcode

L 4,4(1) (4)

ST 6,0(4) (4)

L 6,RSNCODE

L 4,8(1) (5)

ST 6,0(4) (5)

EXIT DS 0H

STORAGE RELEASE,LENGTH=WORKLEN,ADDR=(10) (6)

LM 14,12,12(13)

SR 15,15 ZERO RETURN CODE (7)

BR 14

WORKAREA DSECT ,

RETCODE DS F

RSNCODE DS F

APAALEN DS F

Page 19: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

19

CSVAPF MF=(L,CSVAPFPL)

DSWORK DS CL64000

WORKLEN EQU *-WORKAREA

CSVAPFAA , Include CSVAPFAA mapping

END

LISTAPF 的主要目的就是调用 CSVAPF 函数获取系统 APF 列表,将其放入 REXX 的

DWORK 参数中,然后将 CSVAPF 的返回码和原因码放入 REXX 的 RET 和 RSN 参数中。

所以,程序的关键是找到它们的地址,正确地接收到来自 REXX 的 DWORK、RET、RSN这三个参数,这样就能将数据正确传递到 REXX 中去。程序中标有数字(3)、(4)、(5)的位

置代码就是通过 R1 寄存器分别找到三个参数的地址的语句。

程序首先申请一块临时内存,并执行 CSVAPF 函数,将返回结果存放于这块内存

中。然后通过 R1 寄存器找到三个参数的地址,把临时内存中的返回结果放入到各自对应

的参数中。接着释放临时内存, 后在寄存器 R15 中设置返回码并返回。

以下是对标注的语句进行解释:

(1) 申请临时内存,用来存放 CSVAPF 返回结果。

(2) 执行 CSVAPF 中的 LIST 功能,将返回结果保存在临时申请的内存中。其中

DSWORK 将对应 REXX 中的 DWORK,RETCODE 将对应 REXX 中的 RET,

RSNCODE 将对应 REXX 中的 RSN。

(3) 通过寄存器 1,在偏移为+0 的位置得到第一个参数地址,保存到寄存器 2,并通过

MVCL 指令将长度为 APAALEN 的数据从寄存器 5 所指的地址拷贝到寄存器 2 所指的

地址(实际上,就是将 APF 列表内容返回给 REXX)。

(4) 通过寄存器 1,在偏移+4 的位置得到第二个参数地址,将 CSVAPF 的返回码

RETCODE,放入第二个参数,传递给 REXX。

(5) 通过寄存器 1,在偏移+8 的位置得到第三个参数地址,将 CSVAPF 的原因码

RSNCODE,放入第三个参数,传递给 REXX。

(6) 释放临时内存。

(7) 在寄存器 15 中,设置程序返回码。

后,编译 ASM 汇编代码,并执行 REXX,我们就可以得到以下类似返回结果: RET: 0 RSN: 0

106

1 OD8RB1 SYS1.LINKLIB

2 OD8RB1 SYS1.SVCLIB

3 OD8RB1 IGY.SIGYCOMP

4 OD8RB1 IOE.SIOELMOD

5 OD8RB1 SYS1.SBDTLINK

….

104 *SMS* WDZ.SCCULOAD

105 *SMS* APA.V7R1.SCAZAUTH

106 *SMS* APA.V7R1.SCAZLINK

Page 20: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

20

以上我们可以看到,系统的 APF 列表已经通过程序被正确地读取出来。

这就是对 REXX 如何分别调用 COBOL、C、ASM 语言程序进行参数传递的一些编程

介绍,希望对大家的工作有所帮。

Page 21: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

21

CPU 配置对 CICS处理能力的影响 百硕工程师 李巍

不久前,在随意浏览和寻找关于性能分析方面的文章时,偶然间发现了一篇很有帮助

的讨论题目:关于 CPU 配置给 CICS 性能带来的影响。于是,选用了日常工作中某系统的

数据,作为示例加以分析说明,将其中的一些要点和心得与大家分享。

CICS 处理能力

CICS 是运行在 z/OS 平台上的地址空间,为外部访问提供服务,所以本质上来讲

CICS 的 大处理能力和并发处理能力取决于 CICS 地址空间能够由 MVS 获得的 CPU 资

源,在这里我们把它叫做 CICS 处理能力。

CICS 是一个巨大的“单”应用程序,是一个特殊 TCB(即 QR TCB)的 主要用

户,所以就要有获得高 CP 比率的能力。当所获得的 CP 比率越高时,CICS 的处理能力表

现得就越强大。

CICS 处理能力的基础

LPAR 的管理是基于时间片进行控制的,当 CEC 满负荷运转时,LPAR 的管理程序不

断地对 CP 进行分配和再分配,参照权重设置来满足不同 LPAR 上的资源需求。CP 份额是

一个 LPAR 确保能够获得的一个 CP 的比率,在此之前已分配的 CP 是不能移为它用的。

为了 CICS 能高效地运行,CP 份额必须保证在相当高的水平。经验来讲,90%的水平是非

常理想的,80%也是不错的,70 是可以接受的。CP 份额的计算公式是:

CP SHARE = [ (#physical CPs) / (#logical CPs in LPAR)] * LPAR Fair SHARE

其中,

LPAR Fair Share = LPAR weight/ total weight of all LPARs

CPs available to be shared amongst the LPARs = (Total physical CPs) – (CPs dedicated to given LPARs)

关于 CP 份额计算可以看下面这个具体的示例:

Page 22: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

22

在这个硬件配置中,一共由 4 颗物理处理器,并不存在 Dedicated 的 CP,所以意味着

4 颗 CP 在四个 LPAR 中共享。

LPAR 管理程序基于 CP 份额分配可用的 CP 给被管理的 LPAR,要计算出 CP 份额,

首先要得到 LPAR 的正常分配份额,其大小由 LPAR 的权重除以各 LPAR 权重之和得来,

即 LPAR FAIR SHARE = LPAR weight/total weight。利用 PARTITION DATA REPORT 中

的数据,LPAR 的正常分配份额为 500/660,0.758 或者 75.8%。

报告上可以看出 BP0301 使用了 2 颗逻辑处理器,整个 CEC 的共享 CP 资源是 4 颗,

那么 CP 份额:4/2 × 0.758 =151.6%,由于 CP 份额的 大值就是 1,所以此配置下的 CP份额取得了 大值,意味着可以一直占用 CP。如果你计算出的 CP 份额低于 80%,或甚

至低于 70%,那就应该考虑 LPAR 的配置是否恰当。

当 LPAR 的资源使用接近权重配置时,即 CEC 运行在 100%状态时,某个 LPAR 使用

的 CP 数量可以这样计算:

LPAR Fair Share * (number of shared CPs)

对于 BP0301 LPAR 大的逻辑 CP 是 0.758×4=3.03 颗 CP。这时我们可以从示例中发

现一个问题,此 LPAR 实际配置可用的逻辑 CP 仅为 2 颗,而根据权重配置计算出的 CP数量却为 3.03,这说明此 LAPR 的权重和逻辑 CP 数量的配置存在冲突,应给予调整,

好使得两个参数相互配合。

CP 份额和 MVS Busy 的进一步分析

在 PARTITION DATA REPORT 中 BP0301 LPAR 达到了 62.42%的逻辑 CPU 使用

率,31.21%的物理 CP 使用率。之前计算的 CP 份额是 151.6%,物理硬件份额是 75.8%,

Page 23: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

23

但由于共享 CP 个数的配置,使得这两个数值大小因其而改变,CP 份额实际值应为 100%,物理硬件份额实际值应为 50%。100%的 CP 份额表明 QR TCB 能够独占 CP,进行大

量的任务处理,而不受其它 LPAR 的影响。

在 CPU ACTIVITY 报告中显示 MVS 正在利用的处理能力达到了 62.55%,表明 LPAR的 CPU 资源使用率仍有很大余量。

CPU ACTIVITY 报告提供了 LPAR busy 的信息,这个使用率可以用来和 CP 份额做以

比较,当 CEC 处于满负荷运转时,理想的情况下 LPAR busy 的数值应该等于 CP 份额。

在分配两颗 CP 的情况下,LPAR 上可以有 2 个 MVS 工作单元并行。观察 SYSTEM

ADDRESS 的统计数据,在 N-N+80 行的数据表示有任务准备好而等待处理的地址空间数

量。N+1 是在这个统计时间段内,在其中 15.6%的调度时间段内是 3 个 ASID 准备好了可

以被执行,N+*依次类推。当系统中有更多并行的 DB2 Thread 和 DB2 调用时,N+1-N+80 中就可能有更多的任务等待处理,表现出更严重的 CP 争用。在<=N 的比率小于 60%,应该考虑增加 CP 个数,改善并行处理能力。

Page 24: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

24

总结

CICS 的处理能力表面看起来好像是由 QR 和 OPEN TCB 引擎来确定的(OTE 功能自

CICS TS V1.3 开始提供),但是本质上它们还是通过使用 CP 的处理能力服务于客户的请

求。考虑到 CICS 一个 QR TCB 和多 OPEN TCB 的特性,CICS 性能可从下面两方面受

益: 单个 CP 能力越强,QR TCB 的性能越好。 可用的 CP 越多,可并行的 OPEN TCB 越多。

但是从 LPAR 角度考虑,当启用越多的 GCP 时,单个 CP 的能力随之下降。那么,在

增加 CP 数量和增强单个 CP 能力互相矛盾的情况下,为了充分利用 CICS 的处理能力,

CPU 的配置还得根据应用的实际情况来调整确定。

Page 25: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

25

RACF 应用两例 百硕高级工程师 罗文军

我们知道,RACF 是 IBM 主机系统上使用的

一个提供安全管理的软件产品。对 RACF 的应

用,如 RACF 设置和一些 EXIT 能够帮助系统管

理人员进一步完善和发挥 RACF 的作用。系统管理人员可以根据系统的实际情况对此进行

挖掘,加以利用。

本文介绍了 RACF 应用的两个例子,一个是定义紧急情况下使用的 ICHRDSNT,另

一个是 RACF EXIT IGGPRE00,可以用来保护磁盘卷。

以下为该两个 RACF 应用的具体介绍。

一、供RACF紧急恢复使用的ICHRDSNT

RACF 故障时的紧急恢复,可以采用的手段是各式各样的,视 RACF 故障的情形而

定。常用的恢复手段有:

1)使用 RVARY 命令

2)通过 SYS1.UADS 登录系统

3)通过预先定义好的紧急情况下使用的 ICHRDSNT 程序模块进行恢复

以上所提到的第 3 种恢复可用于 RACF 数据集出现故障的情形。ICHRDSNT(Dataset Name Table)为系统安装的 RACF 定义模块,里面描述了 RACF 数据库使用的数据集。这

个 Table 包含了 RACF 所要使用的每个 RACF 数据集(包括 RACF 备份数据集)的名称条

目。ICHRDSNT 中还有 SYSPLEX 通讯和数据共享的选项设置。

采用第 3 种恢复的前提条件是需要系统事先定义可用于恢复的 RACF 数据集,我们在

本文中称之为 RACF 紧急数据集,RACF 紧急数据集如仅用于恢复,可以比当前在用的

RACF 数据集要小。然后,在 ICHRDSNT 模块中指定 RACF 紧急数据集名称。在紧急恢

复时,系统将按紧急恢复的要求进行 IPL 启动,调用紧急恢复采用的 ICHRDSNT 模块,

启用 RACF 紧急数据集。当然,我们也可以在 ICHRDSNT 中不指定 RACF 数据集,而用

符号“*”代替,这样在 IPL 时,系统会提示输入我们指定的 RACF 数据集名称,如下所

示: *01 ICH502A SPECIFY NAME FOR PRIMARY RACF DATA SET SEQUENCE 001 OR 'NONE'

一般来说,在 ICHRDSNT 程序模块中指定“*”的方式较灵活。用 ICHRDSNT 模块

进行紧急恢复的设置方法如下:

1、 制作两个LOAD库,分别存放正常和紧急情况下使用的ICHRDSNT模块。例如:

指 定 的 两 个 LOAD 库 名 称 分 别 为 SYS1.ICHRDSNT.NORMAL 和

SYS1.ICHRDSNT.EMRGNCY

Page 26: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

26

2、 将正常情况下使用的ICHRDSNT模块放置在SYS1.ICHRDSNT.NORMAL

3、 编 译 紧 急 情 况 下 使 用 的 ICHRDSNT , 将 该 定 义 模 块 放 置 在

SYS1.ICHRDSNT.EMRGNCY。编译作业流如下所示: //RDSNT JOB ,'DATA SET NAME TABLE',MSGLEVEL=(1,1),REGION=4096K

//STEP1 EXEC HLASMCL

//* @04C

//C.SYSIN DD *

ICHRDSNT CSECT

DC AL1(1) INDICATES ONE RACF DATA SET

DC CL44'*' PRIMARY RACF DS NAME

DC CL44'*' BACKUP RACF DS NAME

DC AL1(255) NUMBER OF RESIDENT DATA BLOCKS

DC X'80' UPDATES DUPLICATED ON BACKUP DS

END

/*

//L.SYSLMOD DD DSN=SYS1.ICHRDSNT.EMRGNCY, **MUST BE LIBRARY WITH**

// DISP=SHR,UNIT=3390, **NEW RELEASE OF RACF **

// VOL=SER=R1CT01

//L.SYSIN DD *

NAME ICHRDSNT(R)

4、 对于正常和紧急情况在SYS1.PARMLIB中分别定义不同的PROGxx,如PROG00(正常情况)和PROGEM(紧急情况)

5、 在 PROGxx 中的 LNKLST 分别使用 SYS1.ICHRDSNT.NORM ( PROG00 )和

SYS1.ICHRDSNT.EMRGNCY(PROGEM)

6、 在紧急情况下,系统IPL使用PROGEM,调用紧急情况下的ICHRDSNT程序模

块。当出现前面所提到的的ICH502A信息提示时,回答以RACF的紧急数据集名称,

假设名称为SYS1.RACFDS.EMRGNCY。 ICH508I ACTIVE RACF EXITS: NONE

*01 ICH502A SPECIFY NAME FOR PRIMARY RACF DATA SET SEQUENCE 001 OR 'NONE'

R 1,SYS1.RACFDS.EMRGNCY

IEE600I REPLY TO 01 IS;SYS1.RACFDS.EMRGNCY

IEF196I IEF237I 0A88 ALLOCATED TO SYS00001

*02 ICH502A SPECIFY NAME FOR BACKUP RACF DATA SET SEQUENCE 001 OR 'NONE'

R 2,NONE

IEE600I REPLY TO 02 IS;NONE

以上实现方法大家可参考 IBM 手册“z/OS Security Server RACF System Programmer's Guide” 3.1.1.4 Emergency data set name tables。

二、提供磁盘卷保护的EXIT IGGPRE00

RACF 产品带有一些 EXIT,可作为其标准功能的一个补充。如 RACF 提供了一个名

为 IGGPRE00 的 EXIT,它可用来保护 NON-TEMPORARY、NON-VIO 的数据集不会随意

被分配到该磁盘卷上。

该 EXIT 安装实施的方法如下:

Page 27: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

27

1、 从SYS1.SAMPLIB(RACFEXIT)中截取IGGPRE00汇编程序部分,生成单独的

Member IGGPRE00。

2、 编译该程序。使用的汇编编译作业流见附件。 注意其中的选项,在编译时选RENT,在LINK时选用RENT、REFR、AMODE(24)、RMODE

(24),可参见原程序中的说明,如下所示:

*** MAPPING MACROS MACRO LIBRARY *** 33150000

*** -------------- ------------- *** 33200000

*** IECIEXPL SYS1.MODGEN *** 33250000

*** IEFUCBOB SYS1.MODGEN *** 33300000

*** ICHSAFW SYS1.MODGEN *** 33350000

*** *** 33400000

*** LOAD MODULE NAME SYSTEM LIBRARY *** 33450000

*** ---------------- -------------- *** 33500000

*** IGGPRE00 (RENT,REFR) SYS1.LPALIB *** 33550000

*** AMODE(24) RMODE(24) *** 33600000

将编译的程序模块 IGGPRE00 放置在 SYS1.LPALIB 里。

3、 在SYS1.PARMLIB中的LPALSTxx,SYS1.LPALIB定义如下所示: ………………………………………….

CEE.SCEELPA,

EUV.SEUVLPA,

ISP.SISPLPA,

SYS1.LPALIB,

SYS1.SDWWDLPA

4、 IPL CLPA冷启动系统

5、 在RACF中增加定义,假定我们只允许SYSPRG1用户而防止其他一些用户分配数

据集在磁盘卷SYSRES上。我们需要做如下所示的定义: RDEF FACILITY $DASDI.SYSRES UACC(NONE)

PERMIT $DASDI.SYSRES CL(FACILITY) ID(SYSPRG1) AC(UPDATE)

6、 在RACF定义完成之后,执行REFRESH SETROPTS RACLIST(FACILITY) REFRESH

7、 测试

使用其他用户 TSO 登录,通过 ISPF P.3.2 在 SYSRES 卷上定义分配一个数据集,这

时出现以下的信息,表明分配数据集失败。 IKJ56223I SPACE REQUEST DENIED BY INSTALLATION EXIT, INSTALLATION EXIT REASON CODE IS

X'47B0'

***

而 SYSPRG1 可以在此 SYSRES 卷上分配一个数据集。这表明通过 IGGPRE00 EXIT对磁盘卷 SYSRES 的 RACF 保护是成功的。

以上介绍了 RACF 应用的两个示例,更多的 RACF 应用,有待我们在实践过程中,加

以深入地了解和认识,更好地用于系统管理之中。

Page 28: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

28

User-maintained Data Table 百硕高级工程师 贺明

百硕工程师 吴伟标

一、 简介 Data table 是 CICS 提供的一个能将物理文件数据拷贝到内存中并对内存中的数据进行

读写操作的工具,它是 CICS 文件管理服务的一项扩充。Data table 一般分为两种,分别为

CICS-maintained data table(以下简称 CMT)和 User-maintained data table(以下简称

UMT)。CMT 是由 CICS 进行管理的 Data table,对 CMT 的写操作也会马上更新源物理

文件,而在这一过程中应用程序并不需要做任何操作,所有同步更新的工作都是由 CICS来完成。UMT 是由用户管理的 Data table,对 UMT 的任何操作都不会更新源物理文件,

源物理文件中的数据拷贝到 UMT 中以后,它们双方面是互相独立的了,对其中任何一个

的修改都不会影响到另外一个。而在关闭 UMT 以后,在此 UMT 中的所有数据都会被清

除。当重新打开这个文件时,CICS 会重新从源文件中拷贝数据到 UMT 中。在本文中,我

们将介绍 UMT 的定义及如何使用它。 二、 如何定义 UMT

UMT 的定义与 CICS 文件的定义基本上是一样的,都是通过 CEDA DEFINE FILE 命

令来定义,唯一的不同点在 DATATABLE PARAMETERS,其中,TABLE 参数指定为

NO 时,便是实际上的物理文件,而指定其他的参数都将是 Data table,MAXNUMRECS表示在 UMT 中 多能存储多少条记录,指定 Nolimit 表示没有限制。 三、 如何使用 UMT

UMT 的 使 用 与 物 理 文 件 的 使 用 是 完 全 相 同 的 , 都 是 通 过 执 行

READ/WRITE/REWRITE FILE 来进行操作。以下我们通过实验来演示如何使用 UMT 以及

探讨 UMT 和源文件之间的关系。 1) 定义 VSAM 文件 TRAINV2,物理文件名为 PC390UG.TRAIN.TRAINV2.KSDS

Page 29: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

29

Page 30: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

30

2) 定义 UMT USRDTBL1,指定与 TRAINV2 同样的物理文件名,在 TABLE 参数中

指定 User 表示要定义的是 UMT

Page 31: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

31

Page 32: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

32

3) 在 TRAINV2 和 USRDTBL1 定义成功以后,打开这两个文件。再执行 CECI READ FILE 命令分别读取两个文件中的数据,如下图所示,可以看到这时两个文

件中读到的数据都是一样的,也证明了 UMT USRDTBL1 已经成功的拷贝了物理

文件 TRAINV2 中的数据。

Page 33: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

33

4) 在之前提到,UMT 和物理文件是相互独立的,对 UMT 的操作是不会影响源物理

文件的。接下来实验中我们将同时更新 USRDTBL1 和物理文件 TRAINV2 中的同

一条记录,以确定它们是否是相互独立的以及更新数据是否不会对彼此造成影

响。

Page 34: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

34

Page 35: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

35

Page 36: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

36

Page 37: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

37

Page 38: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

38

5) 在上面的操作中,我们看到对文件 USRDTBL1 加锁并不影响到 TRAINV2 的操

作,可以证明这两个文件是相互独立的。而再次读取这两个文件中被修改的记

录,如下图所示,可以看到两个文件中的数据已经是不同的了,也证明了对其中

一个文件的更新不会影响到另外一个文件。

Page 39: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

39

四、 总结

UMT 是贮存在内存中的,使用 UMT 可以在很大程度上提高文件访问的效率。UMT特别适合于那些需要频繁读写临时数据的应用程序,以及作为参数文件和公用的只读文

件。但因为对 UMT 的更新操作不会更新到源文件中,如果有某些应用需要更新到源文件

的话,需要在更新完 UMT 以后再执行命令更新源文件,因此,当需要大量的对源文件的

更新时,使用 UMT 反而有降低应用程序的执行效率。

总的来说,UMT 为我们提供了一种数据共享及高效访问数据的方法,在 CICSPLEX中,CFDT 也是一种特殊的 UMT。

Page 40: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

40

Q & A about IBM Specialty Processors 百硕外籍技术专家 Martha Hall 问 题 1 、 How long have IBM Specialty Engines been available for customer use? The IBM IFL (Integrated Facility for LINUX) specialty Engine was introduced in 2000. The zIIP (zSeries Integrated Information Processor) and zAAP (zSeries Application Assist Processor) Specialty Engines were introduced by IBM in 2006. 问题 2、How many customers are currently using IBM Specialty Engines? According to a survey by Cheryl Watson at Share in August of 2009, thirty seven percent (37%) of those data centers represented at the conference are currently using zIIP processors. Twenty eight percent (28%) of the data centers were using the Integrated Facility (IFL) for Linux. Twenty percent (20%) of the data centers represented at the conference are using zAAP processors. 问题 3、How is work dispatched to a zIIP Specialty Processor? There are many advantages to using a zIIP processor. zIIP processors were developed primarily for DB2 exploitation. IBM has continued to enhance the zIIP function since it was originally announced. In order for DB2 work to run on the zIIP it must be an Enclave SRB. There are two types of basic dispatchable units; one is a TCB and one is an SRB. A TCB is a dispatchable unit that runs at the priority of the address space it is dispatched in and is pre-emptable. An SRB runs at a supervisory priority and is non pre-emptable. An enclave is a special type of dispatchible unit. Its execution is independent of an address space and it is managed by WLM. An enclave can be made up of multiple dispatching units executing in multiple address spaces. An address space can create and own multiple enclaves. The DB2 DDF function creates the Enclave SRBs. DDF receives requests and these requests are routed into the DB2 xxxxDIST address space. The enclave SRBs are created there and then routed to the DBM1 address space. You must create WLM definitions for these enclave SRBs for DDF transactions to run correctly. Requests that come via DRDA over a TCP/IP connection may run on the zIIP. In addition, internal DB2 utility functions that are used to maintain index maintenance structures can also use the zIIP. This includes the LOAD, REORG, and REBUILD functions. Directing the Enclave SRB part of the DB2 work is done automatically by zOS and DB2 working together. When DB2 schedules an enclave SRB, it tells the zOS dispatcher which requests are eligible to run on a zIIP. DB2 Parallel Query also creates Enclave SRBs so that parts of that workload are also zIIP eligible as are DB2 Stored procedures.

Page 41: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

41

There are some restrictions on the number of Specialty processors. The number of those processors cannot exceed the number of general CP processors. Specialty processors can be either dedicated or shared. 问题 4、How do I how much of my DB2 workload will run on a zIIP Specialty Engine? It is not necessary to have a zIIP engine installed before you determine whether or not a significant part of your workload will run on the zIIP. You can use the PROJECTCPU facility in combination with RMF to predict how many MIPs can be offloaded to a zIIP. You can use this report to do additional capacity planning in order to determine your CP requirements once you have implemented the zIIP.

Page 42: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

42

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

2010 年 3 月 1 日出版(总第 19 期)

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

出版:百硕客户通讯编委会 吕 宁 李 琰 马彤雷 王晓兵 刘京平 吴笳笳 张凤华 陈银波 陈 建 邹 杰 罗文军 贺 明 徐卫华 高春霞 高大川 高玉超 郑 霞 康会影

Martha Hall

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

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

Page 43: 百硕客户通讯,总第 19 期(2010 年3 月1百硕客户通讯,总第19 期(2010 年3 月1 日) 5 DB2 X will deliver a variety of improvements to the IBM-supplied utilities

百硕客户通讯,总第 19 期(2010 年 3 月 1 日)

43

百硕客户通讯总第 19 期(2010 年 3 月 1 日) 百硕同兴科技(北京)有限公司 Bayshore Consulting and Service Co., LTD.