VSAM.基础知识
VSAM.

VSAM.的基础知识

本文将带您在VSAM中,并解释虚拟存储访问方法的环境。自20世纪70年代以来,VSAM已经存在,提供了一种存储3种类型的大量数据的方法。

  1. 随机的
  2. 顺序
  3. 跳过顺序

VSAM.具有许多不同的结构。

  1. 键测序数据集结构(KSD)
  2. 输入序列数据集结构(ESDS)
  3. 相对记录数据集结构(RRD)
  4. 线性数据集结构(LDS)
  5. 可变相对记录数据集结构(VRRD)

每个结构都以相同的方式定义,但每个结构提供不同的处理能力和访问。一旦定义了数据集,它只可以通过目录找到。在每个Z / OS系统中,有一个主目录,它在IPL中选择,其中许多用户目录和包含一个或多个VSAM数据集的每个卷都将具有定义的VSAM卷数据集(VVDS)。

主设备和用户目录是KSDS结构,并且VVDS是ESDS。这些目录称为集成目录设施(ICF)。用户目录被称为基本目录结构(BCS)。因此,完整的ICF目录是BCS和VVDS的组合。

键查询数据集:

键序列数据集(KSD)定义为2个组件。索引组件和数据组件。

索引组件进一步分为一个或多个集合,索引集和序列集。序列集是索引的最低级别。

KSD中的每个记录都有一个密钥。 KSD的定义包括指定记录中键的起始位置和密钥的长度。记录必须处于密钥序列,以便使用Repro命令正确加载它们。

如果repro找不到4个键,则它将其放弃了钥匙序列超出的负载和报告。

KSD是最受欢迎的,因为它允许添加,更新,插入和删除记录。因此,索引组件将仅由键组成,并且数据组件将包含整个记录。

该结构允许2种类型的访问,随机,其中索引和顺序找到记录,其中通过遵循序列设置并使用数据组件中的下一个记录的内部指针找到记录。

在缓冲区方面。索引组件需要更多缓冲区,数据组件,顺序访问需要随机访问和更多缓冲区。

在我们继续前进到其他VSAM结构之前,让’s在VSAM数据集中查看。集中在KSD上它具有索引组件和数据组件。定义是呼叫群集。记录可以是固定的或变量。记录以控制间隔存储。它们具有设置尺寸,从512Bytes开始,增加512至8192,然后按2K到32K。所以选择正确的CI大小可能很棘手。

CIS进一步将其分组到控制区域。我们可以指定CI大小,但VSAM将CA尺寸计算为最小的主要,辅助空间或1个气缸。

每个CI中有2个其他字段。控制间隔定义字段(CIDF),它们的长度为4个字节。它表示CI中的自由空间开始以及可用的空间。

第二个字段是记录定义字段(RDF)。这长度为3个字节,并描述CI中的记录的长度以及多少相邻记录是相同的长度。 FreeSpace很重要。它在群集定义中指定为2个百分比。

第一个百分比是在CI中离开的陌生空间是多少,第二个百分点是在加利福尼亚州留下多少令牌空间。仅在数据集的负载期间和控制间隔拆分后分配的氟普空间。

定义群集中的其他选项也很重要。选项速度很重要,因为它导致文件的负载比恢复更快。

恢复会导致CAS的预先格式化,如果要采用系统管理缓冲,则必须指定速度。

RecordSize有2个参数,第一个是平均记录大小,第二个是最大记录大小。如果它们是相同的,则记录的大小固定。需要指定ShareOptions。

这定义了数据集如何在不同地址空间或串区域中共享。有两个值,第一个是横向区域。

  1. 数据集可以通过任何数量的读取请求进行访问,或者只有一个写请求。
  2. 可以由任何数量的读取请求访问数据集,只有一个写请求。
  3. 数据集可以通过任何数量的用户完全共享,但每个用户负责维护读写完整性。
  4. 与3一样,除了为每个请求刷新缓冲区之外。

第二个值是跨系统。这可以指定为3或4.这在z / OS LPAR之间。建议不要在LPAR之间共享VSAM数据集。但是记录级别共享(RLS)可以克服这一点。

VSAM.的挑战之一是,当发出使用更新时,VSAM将返回整个CI到请求。所以想象一下,我们的CI大小为4096,具有80个字节的记录,然后我们在CI中有大约50条记录,允许CIDF / RDF。如果请求所需记录27,则其他记录被锁定,直到释放请求。

在CICS中,这主要是一个大问题,主要是对话程序。答案是为了实施记录级别共享(RLS),只要有可用的耦合设施即可。 RLS需要2个结构,以通过XCF管理实用程序IXCMIAPU定义。一个是缓存结构,可以是任何名称,另一个是锁定结构,名为IGWLOCK00。 RLS使用SMSVSAM地址空间与CF通信。定义群集仅需要包含的日志选项以使此定义RLS进行。在CICS中,我们需要RLS = YES在文件定义中的SIT和RLSACCESS(是)。如果没有可用的CF,则需要将CILOCK的SIT选项设置为否,以允许CIC在读取更新后释放CI。

输入序列数据集:

我讨论了KSD。其他VSAM结构是条目序列数据集(ESDS),相对记录数据集(RRD),线性数据集(LDS)和

可变相对记录数据集(VRRD)。对于ESD,所有记录都按顺序添加顺序添加。

他们收到一个相对字节地址(RBA)。因此,具有80的记录大小,第一记录接收RBA为0,下一个记录接收80的RBA,接下来的160等。添加记录后,将该记录的RBA返回给应用程序。

不支持插入记录或删除记录,尽管可以替换具有相同RBA和相同长度的记录。

在CICS中,只有KSD中的记录并将其标记为文件条目中的可恢复将在失败期间恢复。对于eSDS的CICS,虽然退出XFCLDEL可以将记录标记为逻辑删除,但在eSDS中没有这样的设施。

与RRD相同,没有备用。记录按顺序添加并接收插槽号。第一记录接收槽1,第二接收槽2等。

线性数据集具有固定的CI大小为4096或4096的倍数。它们通常用作其他系统的基础,例如DB2和ZFS聚集体。

让’s讨论VSAM目录。您无法通过IDCAM定义主目录,因为Z / OS将说,我有一个主目录所以我可以’t定义另一个,因此它将定义用户目录,然后定义它’由系统编程器来构建此用户目录作为新的主目录,更新LoadXX成员’S选中下一个IPL。

应该在主目录中的唯一定义是sys1数据集,例如sys1.nucleus,别名–与他们的用户目录和导入相关的高级限定员对这些用户目录连接。这些是BCS定义。

要完成目录定义,您需要使用IDCAM在卷上定义VSAM卷DataSet(VVDS),该卷将包含任何VSAM数据集和任何非VSAM SMS托管数据集。

如果在其中定义了第一个VSAM数据集时未找到VVDS,则VSAM将隐式地定义为sys1.vvds.vvolser。

这必须是名称,但是它’s定义。这是一个ESD。此隐式定义可能不够大,因此可能值得发出修改命令f

目录,vvdsspace(主,辅助)以更改VVDS的隐式定义。一个F目录,报告命令将列出此VVDS空间定义的内容。

对于使用SMB(存储管理缓冲)考虑的VSAM处理。根据访问VSAM数据集的方式存在许多选项。如果你只是依靠Bufferspace–在群集定义中定义,这不是最好的缓冲。

在具有访问权限的COBOL程序中,VSAM将尝试分配更多数据缓冲区。使用访问是随机的,那么VSAM将尝试分配更多的索引缓冲区。

问题出现来源于COBOL程序指定访问是动态的,VSAM无法知道如何构建缓冲区的分配。

但是,在JCL中指定AMP =(AccBias = DO,OR SO或SW)进行数据集,那么您可以影响VSAM如何打开并将缓冲区分配给DataSet。必须使用速度定义群集,请在分配的SMS DataClass中管理并指定扩展格式。

do(direct优化)指定访问是随机的。 DW(直接加权)指定访问大多是随机的,但有一些顺序访问。因此(序贯优化)指定访问是顺序,并且SW(顺序加权)指定访问大多是随机访问顺序。为了在加载KSD时的改进,在JCL中指定AMP =(AccBias = System),Repro将在CO(创建优化)模式下运行。

现在我们有这一切‘complexity’VSAM,只要结构工作就没有问题,但在BCS和VVDS之间发生故障时会发生什么。好吧,VSAM提供了2个可以提供帮助的命令。

一个是检查,另一个是诊断。 Dexextest通过交叉检查索引控制间隔内包含的垂直和水平指针,并通过执行索引信息的分析来检查键顺序数据集群的索引组件,并考虑评估密钥的数据组件的DataTest的分析通过顺序读取所有数据控制间隔,包括自由空间控制间隔来执行数据集集群。

诊断ICFCatalog(不比较)检查每个BCS记录中的信息完整性(仅限BCS内),并诊断VVDS(不比较)检查每个VVDS记录中的信息完整性(仅限VVDS内)。

对于VVDS,第一个记录是VSAM卷控制记录(VVCR)它包含包含卷上数据集的BC的空间和名称。下一个记录是VSAM卷记录(VVRS)。这些在卷上的每个数据集的名称具有BCS的名称,数据集已登录。在VVDS上运行打印命令计数(10)以查看这些。

最初发表于 IBM MainFlamer.

科林珍珠
科林珍珠的最新帖子 (看到所有)
分享这篇文章: 在脸书上分享
Facebook
0在Twitter上推文
推特
分享LinkedIn.
linkedin
向某人发送电子邮件
电子邮件

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *