首页 > 代码库 > z/OS上Dataset 的移动

z/OS上Dataset 的移动

最近的一个需求,需要把大批量的Dataset移到新的Storage Class,新的Volume中去,刚开始感觉非常头疼。仔细研究后发现这个事情其实很简单。确实符合别人所说,事情的在你真正开始努力之后就会变简单了。

 

首先创建你的target Storage class和Storage Group,并把相关的Volume加到对于的SG,这时候不需要担心现有的Vol上已经存在的Dataset,改动Storage Group不会删除DataSet。

 

然后配置ACS Routines,将HLQ,SC和SG关联起来,Validate并激活你的ACS。 用命令 /SETSMS SCDS(SMS.ACS) 可以避免在Console上再输入一次yes。

 

最后就可以开始真正Move DataSet了,用ADRDSSU来实现

//IMPRTCON EXEC PGM=ADRDSSU           //SYSPRINT DD  SYSOUT=*               //SYSIN    DD  *                        COPY  -                                   DATASET(INCLUDE(RBC9CAT.**,  -                        RBC9REG.**, -                                   ) -                  )  -                         STORCLAS(TPHCRYSC) -                  BYPASSACS(**)  -                      DELETE                          

注意第9行写要把这些DataSet 移动到的目标SC,这时候因为SC和SG已经建立了关联关系,所以会自动把DataSet放到目标Volume上。 其实这时候可以先不用建立HLQ和SC的对应关系,因为有BYPASSACS(**),所以这些新的DataSet可以忽略ACS的规则。

 

剩下的时间就是等待时间,这些JOB可能会跑很长时间,因为移动大批量的Dataset还是很费时间的的。所以常见的一个错误是

IEW4000I FETCH FOR MODULE ANTCVXPR FROM DDNAME *VLF*    FAILED BECAUSE INSUFFICIENT STORAGE WAS AVAILABLE. CSV031I LIBRARY ACCESS FAILED FOR MODULE ANTCVXPR, RETURN CODE 24, REASON CODE 26080021, DDNAME *LNKLST*  
这个主要问题是REGION的size太小,可以增大REGION或把上面的JCL include的DataSet拆分来让JOB顺利跑完。