科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网存储频道如何在z/OS与AIX间使用磁带进行数据迁移

如何在z/OS与AIX间使用磁带进行数据迁移

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文将会对主机和AIX上在测试过程中使用到的拷贝命令进行简单介绍,并详细介绍从AIX到z/OS的数据迁移过程。

2007年9月15日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

内容提要

一、用于拷贝的命令
(1) z/OS上的拷贝命令
(2) AIX上的相关命令
二、从AIX到z/OS的数据迁移
(1) 固定长度的行
(2) 变长的行
i. 以FB方式读入
ii.以U方式读入
 
正文

本文将会对主机和AIX上在测试过程中使用到的拷贝命令进行简单介绍,并详细介绍从AIX到z/OS的数据迁移过程。

 

一、用于拷贝的命令

(1)z/OS上的拷贝命令:
主机上提供许多的实用性程序,可以把主机上的数据集或文件拷贝到磁带上,IEBGENER就是其中之一。它可以提供以下操作:
- 为顺序数据集、分区数据集、PDSE或z/OS中的UNIX文件(例如HFS文件)创建备份;
- 可以使用顺序数据集或z/OS中的UNIX文件创建出分区数据集或PDSE,或PDS/PDSE中的成员数据集;
- 对已存在的PDS或PDSE进行扩展,创建新的数据集成员或合并已有数据集;
- 创建编辑过的顺序数据集、分区数据集或PDSE;
- 对含有双字节字符的数据集进行操作;
- 打印顺序数据集、分区数据集或PDSE中的成员数据,或z/OS中的UNIX文件;
- 对数据集中的逻辑记录块进行重新组织或修改记录的长度;
- 为用户的程序提供编辑功能和出口程序,用以处理标签,操作输入数据,创建键值,以及处理输入输出错误;

本文中主要使用IEBGENER的拷贝功能,把数据集拷贝到磁带上。

(2)AIX上的相关命令:
- chdev:修改已定义或已存在设备的属性。
- dd:读取、写入、或列出磁带中的数据。
例如:dd bs=800 if=/dev/rmt0 of=testFB1.txt
其中,bs指定blocksize,即读取的块大小;if指定输入文件,可指定设备文件或者本地文件;of指定输出文件,可指定设备文件或本地文件。
- tctl:为流式磁带机指定子命令,用于查询状态或定位磁带中的位置,例如,倒带或快进。
例如:tctl -f /dev/rmt0 rewind
其中,-f 指定设备文件,rewind指定把磁带倒带到初始位置;
- iconv: 把某种编码的字符转换成另一种编码的字符。
例如:iconv -f IBM-037 -t IBM-437 testFB1.txt > testFB2.txt
其中,-f 指定需要转换的原编码方式,-t指定转换后的编码方式,testFB1.txt为需要进行转换的文件名,testFB2.txt为转换后的文件名,如果省略testFB2.txt, 则转换后的文件将输出到标准输入输出上,即屏幕上。

除了以上命令外,也可以使用tcopy、tar、cpio等命令对磁带进行操作。更多的命令和使用方法请参考AIX的Information Center: http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp

二、从AIX到z/OS的数据迁移

对于AIX上的文件,由于其为流格式,因而在格式上来说并没有主机上文件的格式区别。为了测试的简便起见,我们也把测试分为两种情况,分别为AIX的文件中所有行的长度为固定的或是变长的。

(1)固定长度的行

在AIX文件中,所有的行都具有固定的长度,该长度将被用于主机上记录的长度。

AIX上进行拷贝的命令
dd bs=800 if=tt1.txt of=/dev/rmt0
我们在AIX上创建了tt1.txt,其中每行的固定长度为80,以块大小为800的长度写入磁带。

使用DITTO所看到的磁带上的实际格式:
Blk 1 File 1 from begin of tape 0580 3590 Col 1 Fmt CHAR
AAAA VOL1 AA DSN Uprotect 359x ASCII YES

Block Length 1...5...10....5...20....5...30....5...40....5...50....5...60
1 800 111111111111111111111111111111111111111111111111111111111111
2 800 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
3 480 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Tape mark * * * * * * * * * * * * * * * * * * * * * * * * * * * *

如何从主机平台读取磁带上的AIX数据

当把磁带上的AIX文件读入时,使用行的固定长度作为记录长度,并使用AIX写入磁带时同样的块大小,作为MVS的固定长度记录的文件进行存储。
其中,SYSUT1指定了读入的磁带地址、位置,以及相应的数据信息,LABEL=(1,NL)说明该文件位于磁带的第一个位置,并且没有使用标志。SYSUT2指定了写入的MVS文件名称,文件的格式,以及文件的分配大小。
//TEST2 JOB CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),
// NOTIFY=&SYSUID
//STEP1 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=SU.GTFTRACE,DISP=OLD,
// UNIT=580,VOL=SER=TSCMLY,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),
// LABEL=(1,NL)
//SYSUT2 DD DSN=ADCDA.TESTAIX.FIX1,DISP=(NEW,CATLG),
// UNIT=3390,DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),
// SPACE=(CYL,(1,1))
//SYSIN DD DUMMY


(2)变长的行

在这样的AIX文件中,每行的长度并不是固定的,并且每行的末尾并没有含有主机变长记录的信息,因而在主机上读取处理的时候需要进行特殊处理。

AIX上进行拷贝的命令
dd bs=800 if=tt2.txt of=/dev/rmt0
我们在AIX上创建了文件tt2.txt, 其中的每行具有不同的长度。使用dd命令将其以块大小为800的长度写入磁带上。

使用DITTO所看到的磁带上的实际格式:
Blk 1 File 1 from begin of tape 0580 3590 Col 61 Fmt CHAR
EEEE VOL1 EE DSN Uprotect 359x ASCII YES

Block Length 61...5...70....5...80....5...90....5...00....5...10....5...20
1 800 1111111111111111111.2222222222222222222222222222222222222222
2 800 cccccccccccccccccccccccccccccccccccc.ccccccccccccccccccccccc
3 800 cccccccccccccccccccccccccccccccccccc.ccccccccccccccccccccccc
4 193 cccccccccccccccccccccccccccccccccccc.ddddddddddddddd.ccccccc
Tape mark * * * * * * * * * * * * * * * * * * * * * * * * * * * *


如何从主机平台读取磁带上的AIX数据

从DITTO中我们可以看到,最后一个块中的数据长度并不是某个记录长度的整数倍,因而当把它作为MVS的数据读入时,系统将认为最后一条记录长度发生错误,报告错误并退出。因而,我们考虑两种方式,一种作为固定长度记录读入,在USS中创建相应的文件,并使得其记录为1,这样它就可以应用于所有非固定长度的AIX文件。另一种作为U的文件格式读入,在USS中创建相应文件。

以固定长度记录方式读入

以下是读入AIX文件并创建USS文件的JCL:
//TEST1 JOB CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),
// NOTIFY=&SYSUID
//STEP1 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=SU.GTFTRACE,DISP=OLD,
// UNIT=580,VOL=SER=TSCMLY,
// DCB=(RECFM=FB,LRECL=1,BLKSIZE=10240),
// LABEL=(1,NL)
//SYSUT2 DD PATH='/tmp/mnt/testdata',FILEDATA=BINARY,
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),PATHMODE=SIRWXU
//SYSIN DD DUMMY

其中,SYSUT1指定读入的AIX文件位于磁带的第一个位置,未使用标志,其块大小为10240个字节,每条记录的固定长度为1。而在SYSUT2中,PATH指定USS文件的路径,FILEDATA指定以二进制方式进行处理,PATHOPTS指定系统在访问PATH中指定的文件时所用的访问方式和状态,在该处为当PATH所指定路径的文件已经存在时,将会把其清空并重新写入。PATHMODE指定文件的访问权限控制,SIRWXU指定该文件的拥有者对文件的权限,如果该文件为一个目录,则他可以对该目录进行读、写和搜索;如果是一个文件,则他可以进行读、写和执行操作。

注意:虽然在此处指定读入文件为固定长度的格式,但其记录长度为1将会大大降低性能。在测试中,我们使用1024的记录长度进行了对比,发现记录长度为1024的方式下性能是记录长度为1下的65倍。

2. 以长度为U的方式读入

其中, SYSUT1指定读入文件的名称、位置和格式,在DCB中指定该文件为记录长度U,块大小为31744。在SYSUT2中指定所创建文件的路径和访问方式。
//TEST3 JOB CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),
// NOTIFY=&SYSUID
//STEP1 EXEC PGM=IEBGENER,PARM='SDB=LARGE'
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=SU.GTFTRACE,DISP=OLD,
// UNIT=580,VOL=(,RETAIN,SER=TSCMLY),
// DCB=(RECFM=U,BLKSIZE=31744),CCSID=437,
// LABEL=(1,NL)
//SYSUT2 DD PATH='/tmp/mnt/testdata',FILEDATA=BINARY,CCSID=037,
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),PATHMODE=SIRWXU
//SYSIN DD DUMMY


 

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章