我该如何解决Syncsort公司JCL“超标WER046A SORT能力”(How can I so

2019-09-27 10:00发布

我想整理的数据集,并写入新的数据集,每一次我在执行任务,其异常终止(ABEND = U0016)。

消息形式SYSOUT。

    WER276B  SYSDIAG= 24646562, 29667262, 29667262, 27500165            
    WER164B  307,288K BYTES OF VIRTUAL STORAGE AVAILABLE, MAX REQUESTED,
    WER164B     0 BYTES RESERVE REQUESTED, 307,272K BYTES USED          
    WER036B G=5174,B=1,BIAS=99 
    WER162B 75 PREALLOCATED SORTWORK TRACKS, 3,750,000 DYNAMICALLY 
             ALLOCATED, 
    WER162B 26,721,480 ACQUIRED IN 2,230 SECONDARY EXTENTS, 0 RELEASED, 
             TOTAL 30,471,555 TRACKS USED
    WER046A  SORT CAPACITY EXCEEDED              
    WER493I  ZIIP PROCESSOR USED                 
    WER211B  SYNCSMF  CALLED BY SYNCSORT; RC=0000
    WER449I  SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE
    WER066A  APROX RCD CNT        30430982 

这里是我的代码:

    //STEP50  EXEC SORTD                                             
    //SORTIN   DD DSN=FILEXYZ(0),                          
    //            DISP=SHR,DCB=BUFNO=192                             
    //SORTOUT  DD DSN=FILE2XXY,                            
    //            DISP=(NEW,CATLG,DELETE),RETPD=365,VOL=(,,,99),     
    //            DCB=(RECFM=FB,LRECL=30050,BLKSIZE=0,BUFNO=192),    
    //            UNIT=(TAPE,2)                                      
    //SYSOUT   DD SYSOUT=*                                           
    //SYSPRINT DD SYSOUT=*                                           
    //SYSIN    DD *                                                  
           SORT FIELDS=(19,5,PD,A,8,6,PD,A,50,2,ZD,A)                  
           OUTREC IFTHEN=(WHEN=(70,18,CH,EQ,C' encoding="IBM037"'),    
                         OVERLAY=(70:C'  encoding="UTF-8"'))             
           OPTION DYNALLOC=(SYSDA,255)                                 
    /*  

下面是代码]被分配给从JCL:

       4 //STEP40  EXEC SORTD                                                  
       5 XXSORTD   PROC CYLS=1,SYSFICH='*',                                    
         XX     DMPCLAS='1,DEST=ABNORMAL'                                      
         XX*                                                                   
         XX*    REMOVED SEP PARAMETER 89/07/20                                 
         XX*                                                                   
       6 XXSORTD    EXEC PGM=SORT                                              
       7 //SYSOUT   DD SYSOUT=*                                                
         X/SYSOUT   DD SYSOUT=&SYSFICH                                         
         IEFC653I SUBSTITUTION JCL - SYSOUT=*                                  
       8 XXSORTWK01 DD DSN=&WORK1,SPACE=(CYL,(&CYLS)),UNIT=SORTWORK            
         IEFC653I SUBSTITUTION JCL - DSN=&WORK1,SPACE=(CYL, 
         (1)),UNIT=SORTWORK  
       9 XXSORTWK02 DD DSN=&WORK2,SPACE=(CYL,(&CYLS)),UNIT=SORTWORK            
         IEFC653I SUBSTITUTION JCL - DSN=&WORK2,SPACE=(CYL, 
         (1)),UNIT=SORTWORK  
      10 XXSORTWK03 DD DSN=&WORK3,SPACE=(CYL,(&CYLS)),UNIT=SORTWORK            
         IEFC653I SUBSTITUTION JCL - DSN=&WORK3,SPACE=(CYL, 
         (1)),UNIT=SORTWORK  
      11 XXSORTWK04 DD DSN=&WORK4,SPACE=(CYL,(&CYLS)),UNIT=SORTWORK            
         IEFC653I SUBSTITUTION JCL - DSN=&WORK4,SPACE=(CYL, 
         (1)),UNIT=SORTWORK  
      12 XXSORTWK05 DD DSN=&WORK5,SPACE=(CYL,(&CYLS)),UNIT=SORTWORK            
         IEFC653I SUBSTITUTION JCL - DSN=&WORK5,SPACE=(CYL, 
         (1)),UNIT=SORTWORK  
      13 XXSYSABEND DD SYSOUT=&DMPCLAS                                         
         IEFC653I SUBSTITUTION JCL - SYSOUT=1,DEST=ABNORMAL                    
      14 XXSYSUDUMP DD SYSOUT=&DMPCLAS                                         
         IEFC653I SUBSTITUTION JCL - SYSOUT=1,DEST=ABNORMAL                    
      15 //SORTIN   DD DSN=FILEXYZ(0),                               
         //            DISP=SHR,DCB=BUFNO=192                                  
      16 //SORTOUT  DD DSN=FILE2XXY,                                 
         //            DISP=(NEW,PASS,DELETE),RETPD=365,VOL=(,,,99),           
         //            DCB=(RECFM=FB,LRECL=30050,BLKSIZE=0,BUFNO=192),         
         //            UNIT=TAPE                                               
      17 //SYSPRINT DD SYSOUT=*                                                
      18 //SYSIN    DD *     

请建议我一些提示,你过来吧这个问题。 谢谢。

Answer 1:

我去了,上一肢这里假设有问题的文件,这里有一样与同处同一OP文件属性前面的问题: 我如何才能降低CPU的排序操作

随着8000万个记录在30050的LRECL,输入文件大约为2.2TB。

一个公认的原则进行的拇指排序的工作空间是1.3倍的输入文件的大小。 所以,你需要瞄准〜2.85TB的排序工作空间(即〜370万个CYLS或〜55万首曲目)。

随着Syncsort公司的最高255周SORTWK的DD,你就必须取得〜跨越了每个支持的DD 255 14,500 CYLS以满足您的空间需求。 这是一个有点极端,并可能会提出一系列的挑战,但也有可能让你实现这几个选项。

免责声明-我没有亲自使用Syncsort的自己,但仔细阅读文档后,这些概念看起来是与我有经验与其他种类的产品一致。

依靠DYNALLOC

您指定DYNALLOC=(SYSDA,255)通常是推荐的方法。 然而,有一对夫妇与当前设置的问题:

  • 通过使用SORTD PROC,你抢夺本来可以更恰当地利用5个dds的自己。 硬编码SORTWK的DD与PROC SPACE=(CYL,(1))限制总的工作空间,您可以购买,因为DYNALLOC现在只有250周的DD一起工作。 作为@SaggingRufus建议,呼吁Syncsort公司直接将避免PROC DDS的1-CYL分配,并允许DYNALLOC与所有255周的DD工作。

  • Syncsort公司不能准确地投射必要的工作空间。 根据你所提供的输出,Syncsort的初始获取75层的轨道(1个CYL为每个在SORTD PROC 5周硬编码的DD ...换句话说,5周的DD在1个CYL * 15个曲目每次CYL = 75)明确地,然后动态获得了额外3,750,000轨道(1,000 CYLS(或15000个轨道)* 250个DDS)。 然后,它跨越2230个扩展,其指示每二次程度799个CYLS(或11983个轨道)的平均值,并且每体积/ DD平均8.75次扩展获得了额外26700000个轨道(1.78MM CYLS)。 所有这一切都导致总1.6TB〜(〜2MM CYLS)被分配给排序的工作空间,这是远远低于一个2.2TB的输入文件的估计工作空间的要求。 即使我们运用DYNALLOC属性从PROC硬编码SORTWK DDS,只增加大约32GB的总的工作空间和仍然严重不足。 所以,作为@phunsoft表明,添加SIZE = Ennnnnnnn参数可能是必要的Syncsort的适当项目的工作空间。

  • 附加说明 - 你得到每DD <10个扩展的平均事实/音量指示,你在工作空间池为您的环境容量耗尽的可用空间。 您应该与存储管理员协调,以确保有足够的可用磁盘空间为您的工作空间。

因此,绕过PROC提供访问所有255个DDS和提供估测记录计数可能允许Syncsort公司更可靠地计算所需的工作空间,但在单个排序此数据量可能异常值和默认计算可能是不够的。 此外,在您的工作空间池中的可用空间可能是一个限制因素。

硬编码SORTWK的DD

如果您在JCL硬编码SORTWK DDS,你绕过的DD在PROC和消除一些DYNALLOC计算的不确定性。 其实,这是我个人而言,首先需要在这种情况下...硬编码每个SORTWK DD最好的可能的选择来获取〜每个DD 14500个CYLS的办法。 所以:

  • 硬编码每255个DDS(SORTWK01 - SORTWKFF)在工作

  • 包括SPACE=(CYL,(4000,1000))上的每个DD(即使Syncsort的将假想计算次级分配本身)

  • 包括DSNTYPE=LARGE每个DD允许大于4g每卷(每SORTWK限制为1卷)这些DDS的合计应该为你排序的要求提供足够的工作空间。

上述每个选项假设有足够的体积/范围/总空间是在工作空间池为您的商店提供。 我建议你与你的存储管理团队进行协调,确保资源的可用性

使用MAXSORT

Syncsort所提供MAXSORT能力,以容纳非常大的数据集。 它排序的输入文件的部分为中间文件,以及重新使用SORTWK空间后续部分,直至每个部分的中间文件可以组合成一个单一的输出文件。 有使用特殊要求MAXSORT 。 正如前面提到的,我没有访问Syncsort的,所以我不能对此进行测试自己的能力。 你必须自己研究的Syncsort的文档这种能力的细节。



Answer 2:

由于您输入的排序从磁带读取,排序不能可靠地计算所需要的那种工作空间。 尝试添加SIZE = Ennnnnnn参数排序声明。 NNNNNNN是要读取的记录数。 Ë告诉排序这是一个估计。



Answer 3:

尝试调用Syncsort的,而不是直接调用这个PROC。 这PROC只有5个工作文件设置。 通常,最好是让需要,而不是告诉它多少可以使用Syncsort的分配作为工作文件5。

我相信这是已经用完的空间的工作文件。 尝试这个:

//SORT10 EXEC PGM=SYNCSORT,                                   
//             PARM=('INCORE=OFF,DYNALLOC=(SYSDA,255)',EQUALS)
//SORTIN   DD DSN=FILEXYZ(0),                          
//            DISP=SHR,DCB=BUFNO=192                             
//SORTOUT  DD DSN=FILE2XXY,                            
//            DISP=(NEW,CATLG,DELETE),RETPD=365,VOL=(,,,99),     
//            DCB=(RECFM=FB,LRECL=30050,BLKSIZE=0,BUFNO=192),    
//            UNIT=(TAPE,2)
//SYSOUT   DD  SYSOUT=*
//SYSPRINT DD  SYSOUT=*
//SORTMSG  DD  SYSOUT=*
//SYSIN    DD *                                                  
       SORT FIELDS=(19,5,PD,A,8,6,PD,A,50,2,ZD,A)                  
       OUTREC IFTHEN=(WHEN=(70,18,CH,EQ,C' encoding="IBM037"'),    
                     OVERLAY=(70:C'  encoding="UTF-8"'))             
       OPTION DYNALLOC=(SYSDA,255)                                 
/*


文章来源: How can I solve “WER046A SORT CAPACITY EXCEEDED” in SYNCSORT JCL