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 AdabasA 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 superProcessing 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