sábado, outubro 26, 2013

Adabas - ERROR-110, SORT dataset too small

O super descritor é um recurso do Adabas que permite criar um descritor a partir de um ou mais campos de um arquivo, facilitando a pesquisa de registros e melhorando o desempenho das consultas que utilizam esses campos como critério de busca. Entretanto, quando precisamos criar um super descritor em um arquivo com um volume muito grande de registros, podemos encontrar dificuldades durante o processamento. Uma delas é a falta de espaço na área de SORT utilizada pelo utilitário ADAINV, responsável pela criação dos índices e descritores do Adabas. Neste artigo, vou apresentar um problema real ocorrido durante a criação de um super descritor no arquivo 106 do banco de dados 240. Inicialmente, o processamento foi interrompido com a mensagem ERROR-110, SORT dataset too small, indicando que a área de SORT disponível era insuficiente para concluir a operação. Vou mostrar as tentativas realizadas, desde o aumento dos parâmetros TEMPSIZE e SORTSIZE até a criação de uma nova área de SORT com maior capacidade e a alteração da procedure de execução. Por fim, veremos como a inclusão do novo dataset permitiu concluir o processamento com sucesso e criar o super descritor. Rodando o jcl de criação do super descritor;
//AAFSNATB JOB (ALAD,OSB),CLAUD,CLASS=S,MSGCLASS=A TYPRUN=HOLD
//*UQ ALLOW                                                      
//INVERT    EXEC AAFAUTIP,TIME=1440                                            
//DDCARD    DD *                                                                
ADARUN PROG=ADAINV,DBID=240                                                    
//DDKARTE   DD *                                                                
ADAINV INVERT FILE=106                                                          
ADAINV SUPDE='SE=AC(1,3),BC(1,14)'                                              
ADAINV        TEMPSIZE=1000,SORTSIZE=1000
Ocorreu o erro de falta de espaço do SORT do Adabas
A D A I N V:  Error occurred during execution:                                                                                          
ERROR-110, SORT dataset too small                                              
                                                                                
            Supply a larger SORT dataset.                                      
            See the ADABAS Utilities Manual for instructions how                
            to calculate the SORT dataset size.                                
                                                                                
                                                                                
A D A I N V  Terminated                                   2009-12-06  15:19:52
UQS0009 - END OF DATA SET.

                                                                                
--------------------------------------------------------------------------------
OP=S CL=ALL IN=ALL JB=AAFSNATB,06773 DS=1 SI=SO LR=12 LL=80 PP=0 DC=            
RL=999999 AD=J DE= SC= PT= SQ=C RR=0 OC= SD=2000
Neste banco temos duas procedures é uma delas tem a area de TEMP/SORT maior rodamos a criação do super descritor nela também
//AAFSNATB JOB (ALAD,OSB),CLAUD,CLASS=S,MSGCLASS=A TYPRUN=HOLD
//*UQ ALLOW                                                      
//INVERT    EXEC AAFAU240,TIME=1440      
//DDCARD    DD *                        
ADARUN PROG=ADAINV,DBID=240              
//DDKARTE   DD *                        
ADAINV INVERT FILE=106                  
ADAINV SUPDE='SE=AC(1,3),BC(1,14)'      
ADAINV        TEMPSIZE=3000,SORTSIZE=1600
Ainda não deu certo, a saida é criar uma área maior - Formatar um SORT maior (3000 cilindros)
MEMBER=ADAFRMST 000023 REC SAVE:06.12.2009 16:37 BY   USERID AA01055  R=00000001
DSN=AAB.DIBD.JCLS                                LIB=S3 VOL=PRL303 UNIT=1024    
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8​
//AAFAFRMS  JOB (AAFA,DIBD),CLAUD,CLASS=S,MSGCLASS=X                        
//*UQ ALLOW                                                                    
//* ---------------------------------------------------------------            
//*            FORMATA AREAS PARA O ADABAS - SORT                              
//* ---------------------------------------------------------------            
//FORMAT    EXEC PGM=ADARUN                                                    
//* ---------------------------------------------------------------            
//DDSORTR1  DD   DISP=(NEW,CATLG),DSN=ADABAS.DBP.SORTR3,   <=== SORT1          
// SPACE=(CYL,(3000)),UNIT=SYSDA,VOL=SER=ADAH31                                
//* ---------------------------------------------------------------            
//* DDSORTR2  DD   DISP=(NEW,CATLG),DSN=ADABAS.DBP.SORTR2,   <=== SORT2        
//*  SPACE=(CYL,(1600)),UNIT=SYSDA,VOL=SER=ADAW06                              
//* ---------------------------------------------------------------            
//SYSUDUMP  DD   SYSOUT=A                                                      
//DDDRUCK   DD   SYSOUT=A                                                      
//DDPRINT   DD   SYSOUT=A                                                      
//DDCARD    DD   *                                                              
ADARUN PROG=ADAFRM,DBID=240                                                    
//DDKARTE   DD   *                                                              
ADAFRM SORTFRM SIZE=3000,DEVICE=8391,NUMBER=1
Alteramos a procedure AAFAU240 colocamos este novo dataset do SORT3 com 3000 cilindros
MEMBER=AAFAU240 000021 REC SAVE:06.12.2009 16:29 BY   USERID AA01055  R=00000005
DSN=AAB.PROCLIB                                  LIB=PP VOL=PRL303 UNIT=1024    
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8​
//DDTEMPR1  DD   DISP=OLD,DSN=ADABAS.DBP.TEMPR1    <===== TEMP AREA            
//DDSORTR1  DD   DISP=OLD,DSN=ADABAS.DBP.SORTR1    <===== SORT AREA 1          
//DDSORTR2  DD   DISP=OLD,DSN=ADABAS.DBP.SORTR2    <===== SORT AREA 2          
//DDSORTR3  DD   DISP=OLD,DSN=ADABAS.DBP.SORTR3    <===== SORT AREA 3          
//SYSUDUMP  DD   SYSOUT=Z                                                      
//DDDRUCK   DD   SYSOUT=A                                                      
//DDPRINT   DD   SYSOUT=A                                                      
//DDCARD    DD   DDNAME=DDCARD                                                  
//DDKARTE   DD   DDNAME=DDKARTE
Submetido de novo o job do invert para ver se ele vai pegar a SORT3 maior
ID       JOBNAME  STEPNAME PROCSTEP ST DP STORE       CPU  EXCP  ASID DM RP    
                                                                                
J0006808 AAFSNATB INVERT   AAFAU240    F6  2856K   154,80 23390  0097 00
E deu certo, foi criado o super descritor
2 //INVERT    EXEC AAFAU240,TIME=1440                        
        3 XXAAFAU240  EXEC PGM=ADARUN,REGION=0M                      
IEF142I AAFSNATB AAFAU240 INVERT - STEP WAS EXECUTED - COND CODE 0000
Criou o super
Processing Statistics:                                                        
  ----------------------                                                        
                                                                                
               0 Blocks used on TEMP dataset  (0%)                              
           46844 Blocks used on SORT Part 1   (69%)                            
           47032 Blocks used on SORT Part 2   (69%)                            
                                                                                
                                                                                
--------------------------------------------------------------------------------
OP=S CL=ALL IN=ALL JB=AAFSNATB,06808 DS=1 SI=SO LR=8 LL=80 PP=0 DC= RL=999999  
AD=J DE= SC= PT= SQ=C RR=0 OC= SD=2000   06.12.2009, 17:30:00


0 Comments:

Enviar um comentário