`
阅读更多

一个礼拜没整理大机笔记liao ,感觉再不整理的话就对不起大机。昨天的确是虚脱了,所以高珍的课听得象梦游似的。今天比较认真,早上、下午都在机房混,虽然天气很热,但还是顶下来,偶没睡觉,哈哈,真是个意外,连我自己也吓了一跳。

一、VSAM概述:

VSAM(Virtual Storage Access Method)是一种相当与接口的访问方法,是操作系统与应用程序之间的桥梁,其主要目的是提高数据存取的效率。

VSAM读取记录的过程如下:

1、VSAM负责解释应用程序的逻辑请求并且决定需要使用的设备

2、VSAM负责向操作系统申请输入和输出的操作。

3、操作系统执行实际的物理输入和输出操作。

4、VSAM将数据返回给应用程序处理。

二、VSAM数据集类型和结构

[术语]

1、控制段(Control Interval、CI)

---CI是VSAM数据集(除了Liner Data Set)输入输出的单位。

结构如右:R1 | R2 | FREE SPACE | RDF2 | RDF1 | CIDF

---其中,R1、R2表示数据,RDF2、RDF1描述CI中的记录信息(长度和起始位置),每个RDF长度为3个字节。CIDF描述FREE SPACE的大小(2字节)和位置(2字节),长度4字节。

---需要注意的地方,Record从左往右连续填写,RDF紧挨着CIDF从右往左连续填写。FREE SPACE 在中间,刚好两肋插刀。

---如果一个CI中存放的所有记录的长度都相等的话,则整个CI只有两个RDF,一个说明记录长度,另一个说明记录个数。

---CI大小范围[512Byte,32K]

2、控制区(Control Area、CA)

---VSAM数据集创建时所需要的磁盘空间大小是以CA为单位进行分配的。

---由几个连续的CI组成。同一个VSAM里头每个CA都有相同的CI个数。CA的大小可以在定义VSAM数据集的是时候指定。

---CA大小范围 [一个磁道,一个柱面]

3、相对字节位置(Relative Byte Address、RBA)

---RBA是指VSAM数据集中记录的相对位置,从数据集的起始位置开始计算,VSAM将数据看成连续的字节流。

RBA:02040

R1|R2|R3

4、Spanned Record

---长度超过一个CI大小的记录

---大小范围(CI,CA-VSAM控制信息]

5、数据集(Cluster)

---一个逻辑上的概念,由若干个物理数据集组成。

---一般来说,Cluster和Data set之间没什么区别,除了KSDS Cluster。KSDS Cluster 包括KSDS.DATA 和KSDS.INDEX两部分。

[数据集类型]

1、ESDS(Entry-Sequenced Data Set)进入顺序数据集

---ESDS仅由数据部分组成,本质上来说,它是个SDS。

---查找记录可以用顺序查找或者是RBA查找;增加记录只能从后面加;更新记录的话,新记录的长度必须和旧记录的相同;删除记录操作只能从逻辑上删除,无法从磁盘中真正删除。

2、KSDS(Key-Sequenced Data Set)索引顺序数据集

---KSDS包括两部分:Data Component、Index Component

---每个逻辑记录都有一个索引,记录按照索引的升序排列。

---索引必须是连续且唯一的。

---CA中的CI之间可能不是按序排列的,CI内的记录则一定是按序排列。

---索引是树状结构的。IS(Index Set)包含较高层的索引信息,SS(Sequence Set)包含最低层的索引信息。

---SS的大小为一个CI,对应一个数据CA,SS包含下一个SS的水平指针和对应的每个CI的最大索引值以及相应CI的指针(CI的RBA)

---SS的指针超过一个CI大小时,系统会建立多级的IS,但是顶层只能有一个IS。

 

---KSDS的访问方法:

直接存取

(1)查询顶层IS的索引,以决定要要找的记录位于下一层的哪个IS;

(2)循环寻找,直至SS层。

(3)根据SS的记录,对索引所在的CI进行定位。

(4)将该CI从DASD读入到存储器中,取得所要的记录传送到程序中。(以CI为单位进行IO,切记)

顺序存取

(1)定位到第一个CI

(2)从第一个记录开始,顺序读取每个记录,直至完成所有的记录读取操作。

定位顺序存取

(1)按照直接存取的方式定位到需要读取的指针

(2)按照顺序存取方式从指定的记录开始顺序处理,直至完成所有操作。

---KSDS的插入操作:

(1)若目标CI有足够空间的话,则在目标位置插入新记录,并建立相应的RDF,更新SS。

(2)如果目标CI没有足够空间,但CA内还有空的CI,则VSAM产生CI Split操作,将原CI的后半部分(N/2的上限)以及它们所对应的RDF移到空的CI内。新记录增加在原CI的相应位置,并增加RDF,更新SS。

(3)如果目标CI没有足够空间,同时CA内没有空的CI,则VSAM产生CA Split操作。 方法类同CI Split 操作,不过要注意的是SS也会split,并且产生IS。

3、RRDS(Relative Record Data Set)相对记录数据集

---仅由Data Component组成

---每个CI都分成固定大小的片(slot)并且具有相同数目的slot,每个slot都有一个相对记录编号(RRN)。

---每个slot都有一个RDF与之对应,RDF表示该slot是否为空。

4、LDS(Linear Data Set)线性数据集合

---只有Data Component组成,每个CI中都只有数据而没有控制信息。

三、VSAM的编目

1、对数据集的编目实际是对数据集的入口建立列表和索引。

2、在z/OS系统中,主编目只有一个,它描述系统的数据集和用户编目,而用户编目则描述用户的数据集。

3、用户编目的建立是选择性的,主要目的是缩短编目的寻找时间。

4、z/OS系统中,编目结构只有两级。

四、IDCAMS(集成编目访问方法服务实用程序)

[格式]

//SYSIN DD *

DEFINE CLUSTER -/*续行标记 为“-”,切记

(NAME(ST018.EXAMPLE.KSDS1) -  /* 子参数间不是用逗号隔开 ,而是空格,切记切记!

INDEXED -

VOLUNES(USER02) -

FREESPACE(20 10) -

RECORDSIZE(100 100) )

[AMS命令的应用]

1、DEFINE MASTERCATALOG

建立主编目:

DEFINE MASTERCATALOG

(parameters) -

[DATA(parameters)] -

[INDEX(parameters)] -

[CATALOG (parameters)] -

2、DEFINE USERCATALOG

建立用户编目:

 

DEFINE USERCATALOG

(parameters) -

[DATA(parameters)] -

[INDEX(parameters)] -

[CATALOG (parameters)] -

3、DEFINE CLUSTER (建立并定义VSAM数据集)

DEFINE CLUSTER

(NAME(entryname) -

{CYCINDERS (primary [secondary])| -

RECORDS (primary [secondary])} -

[FREESPACE (cipercent [capercent])] -

[INDEXED | NONINDEXED | NUMBERED | LINEAR] -

[KEYS(LENGTH OFFSET)] -

[RECORDSIZE(average maximum)] -

[RECOVERY | SPEED] -

[SHAROPTIONS(crosspartition [cross system])] -

[VOLUMES(volser [volser...])])

[DATA

([NAME(entryname)])]

[INDEX

([NAME(entryname)])]

[CATALOG(mastercatname [/password])]

*******说明:

(1)NAME:指明VSAM数据集的名字,命名规则和其它数据集相同。

(2)CYLINDERS:以柱面为单位分配空间,仅限于磁盘数据集。Primary指第一次进行分配的数量,secondary指追加的分配数量。

(3)RECORD:以记录为单位进行数据集的分配。

(4)FREESPACE:给KSDS或者VRRDS中的每个CI和CA分别预留多少百分比的空间。默认为0;

(5)INDEXED:数据集类型为KSDS

(6)NONINDEXED:数据集类型为ESDS

(7)NUMBERED:数据集类型为RRDS,如果记录平均长度和最大长度不一样,则为VRRDS。

(8)LINEAR:数据集类型为LDS

(9)KEYS:说明数据集中索引的长度和起始位置。注意,偏移良是从零开始的。

(10)RECORDSIZE:分别指定记录的平均长度和最大长度。如果两值相等,则代表数据集的记录是定长格式

(11)VOLUME: 卷标号

(12)DATA:代表KSDS数据集的数据部分

(13)INDEX:代表KSDS数据集的索引部分

4、REPRO

将记录存入数据集中、复制VSAM数据集、复制编目、分开编目或者合并编目。

REPRO{INDATASET(data set name)|

INFILE(DDname)}

{OUTDATASET(data set name)

OUTFILE(DDname)}

[NOREPLACE | REPLACE]

[NOREUSE | REUSE]

5、LISTCAT

显示编目的一部分或者全部信息

LISTCAT[CLUSTER | USERCATALOG]

[CATALOG (catname)]#说明要显示的数据集的编目信息

[ENTRIES(entryname)]#说明编目中的哪一个数据集信息需要显示

[NAME | ALL]# 把编目中指定的名称显示出来,ALL是显示所有的信息

********************一个例子*********************************

000100 //ST018A JOB ACCT#,'TRAINER',CLASS=A,NOTIFY=&SYSUID,
000200 //MSGCLASS=X,MSGLEVEL=(1,1)
000300 //STEP1EXEC PGM=IDCAMS
000400 //SYSPRINT DD SYSOUT=*
000500 //SYSINDD *
000600DELETE 'ST018.VSAM.KSDS1'
000700SET MAXCC = 0
000800DEFINE CLUSTER -
000900(NAME(ST018.VSAM.KSDS1) -
001000INDEXED -
001100VOLUME(USER02) -
001200RECORDS(4000,100) -
001300RECORDSIZE(80 80) -
001400CONTROLINTERVALSIZE(4096) -
001500KEYS(5,4))
001600IF LASTCC=0 THEN -
001700DO
001800REPRO INDATASET(ST018.SDS.DATA) -
001900OUTDATASET(ST018.VSAM.KSDS1)
002000IF LASTCC=0 THEN -
002100DO
002200LISTCAT ENT(ST018.VSAM.KSDS1) ALL
002300PRINTINDATASET(ST018.VSAM.KSDS1) DUMP -
002400FROMKEY(00100) TOKEY(00300)
002500IF LASTCC=0 THEN -
002600DO
002700LISTCAT ENT(ST018.VSAM.KSDS1) ALL
002800DELETE 'ST018.VSAM.KSDS1'
002900DEFINE CLUSTER -
003000(NAME(ST018.VSAM.KSDS1) -
003100INDEXED -
003200VOLUME(USER02) -
003300RECORDS(3000 100) -
003400RECSZ(80 80) -
003500KEYS(5 4) -
003600CONTROLINTERVALSIZE(4096) -
003700FREESPACE(10) -
003800BUFFERSPACE(50000))
003900LISTCAT ENT(ST018.VSAM.KSDS1) ALL
004000END
004100END
004200ELSE -
004300LISTCAT ENT(ST018.VSAM.KSDS1) ALL
004400END
004500 //

小结:

这篇文章,有点恶心,总感觉又在做帮助文档了。。。没想法。

要注意的几个地方:

1、KSDS里的KEY 不能重复,切记切记。
2、VSAM数据集可以JCL语句或3.2界面进行创建。
3、对VSAM数据集的操作必须使用M.7(DITTO)或者JCL直接调用

4、AMS里头的子参数是用空格隔开的,而非逗号,切记!

分享到:
评论

相关推荐

    VSAM基础知识介绍

    VSAM(Virtual Storage Access Method,虚拟存储访问方法)是IBM在大型机系统中广泛使用的一种数据访问技术。它是一种高效、高性能的文件系统,尤其适用于处理大量实时交易数据。在这个文档中,我们将深入探讨VSAM的...

    IBM VSAM教学课件

    ### IBM VSAM教学课件知识点概述 #### 一、VSAM简介 - **VSAM**(Virtual Storage Access Method)是一种高效的数据存储与访问方法,主要用于IBM的大型主机操作系统**z/OS**和**OS/390**环境中。 - **目标**: 通过本...

    vsam介绍中文 大型机

    ### VSAM介绍中文 大型机 #### 一、VSAM基本概念 **虚拟存储访问方法**(VSAM,Virtual Storage Access Method)是IBM为大型机环境开发的一种高性能文件管理系统。VSAM的主要设计理念是实现高效的文件管理和数据...

    vsam介绍(中文)

    ### VSAM介绍(中文) #### 一、VSAM概述 VSAM(Virtual Storage Access Method,虚拟存储访问方法)是一种高效的数据组织与管理方法,主要用于IBM的大型机系统中,特别是z/OS操作系统环境下。它是专门为虚拟存储...

    VSAM操作笔记-吴钦飞.doc

    ### VSAM操作笔记知识点 #### 一、概要 VSAM(Virtual Storage Access Method)是一种在IBM大型机系统中高效管理文件的方法。本篇笔记主要介绍如何创建、初始化、删除VSAM文件,并提供了如何直接使用命令操作VSAM...

    VSAM_详细资料.pdf

    VSAM(Virtual Storage Access Method)是一种虚拟存储访问方法,主要用来组织数据记录,并利用编目实现数据集的维护。VSAM适用于多种作业方式,包括批处理作业和在线作业。它是一个在操作系统和应用程序之间的接口...

    VSAM培训时用过的练习资料

    VSAM(Virtual Storage Access Method,虚拟存储访问方法)是IBM在大型机系统中广泛使用的一种数据访问技术。它提供了一种高效、灵活的数据存取方式,尤其适用于事务处理和在线数据库应用。本训练资料主要围绕VSAM的...

    大型机电子教程 VSAM

    VSAM,全称为Virtual Storage Access Method,是IBM大型机系统中一种高效的数据访问方法。它是一种集成文件系统,设计用于优化IBM Mainframe环境中的数据存取速度和管理效率。本电子教程将深入介绍VSAM的基本概念、...

    中文版VSAM介绍_入门级

    ### VSAM介绍与知识点详解 #### 一、VSAM基本概念及重要性 VSAM,全称Virtual Storage Access Method,即虚拟存储存取方法,是在IBM系列计算机中广泛应用的一种高效文件管理系统。它基于虚拟存储技术,旨在实现与...

    用JCL创建VSAM的一个小例子

    在IBM大型机环境中,VSAM(Virtual Storage Access Method)是一种高效的数据访问方法,它提供了对数据的快速存取。VSAM文件通常用于处理大量实时数据,如交易处理系统。本篇将详细介绍如何使用JCL(Job Control ...

    IBM大型机资料-VSAM

    VSAM,全称为Virtual Storage Access Method,是IBM大型机系统中一种重要的数据访问方法,它作为操作系统和应用程序之间的接口,优化了数据存取的效率。VSAM通过解释应用程序的逻辑请求,协调操作系统进行输入输出...

    vsam 数据集讲解

    VSAM(Virtual Storage Access Method)是IBM大型机操作系统中的一种数据访问方法,它提供了一种高效、快速的数据存取机制。VSAM数据集是VSAM系统的核心组成部分,它包括DATA和INDEX两个主要部分。 DATA部分是VSAM...

    VSAM的简单概述(cobol)

    VSAM,全称为Virtual Storage Access Method,是一种IBM开发的高效、多功能的文件管理系统,尤其在COBOL编程环境中广泛使用。它采用了B+树作为动态索引结构,以支持快速的顺序和直接存取操作。VSAM的设计目标是提供...

    VSAM+JCL技术资料

    VSAM(Virtual Storage Access Method)是IBM Mainframe系统中一种高效的数据访问方法,它提供了对数据的快速存取。JCL(Job Control Language)则是IBM Mainframe操作系统MVS(Multiple Virtual Storage)上的作业...

    VSAM简介

    【VSAM简介】 VSAM(Virtual Storage Access Method)是一种IBM大型主机系统中高效的数据存取方法,它充当了操作系统和应用程序之间的桥梁,旨在优化数据访问的性能。在VSAM中,数据的读取过程分为四个步骤:首先,...

    vsam中文教程

    ### VSAM中文教程 #### VSAM概述 VSAM(Virtual Storage Access Method)是一种高性能的数据访问方法,主要用于IBM的MVS、OS/390以及VSE/ESA等操作系统中。尽管VSAM已经有超过30年的历史,但由于其简单性和高效性...

    VSAM电影数据管理系统解决方案Mainframe 大型机OS/390操作系统

    VSAM(Virtual Storage Access Method,虚拟存储访问方法)是IBM在大型机OS/390操作系统上广泛使用的一种高效的数据存取技术。它是一种动态、高性能的文件系统,专为实时处理和高吞吐量应用设计。在"VSAM电影数据...

    vsam介绍

    ### VSAM介绍 #### VSAM概述 VSAM(Virtual Storage Access Method)是一种高效的数据组织及存取方法,专为IBM的z/OS操作系统设计。它主要用于优化数据集的管理和访问,提高了数据存取效率和安全性。 #### VSAM的...

Global site tag (gtag.js) - Google Analytics