sexta-feira, agosto 14, 2026

Adabas - Um Erro no REORFILE entre Cilindros e Blocos

Ao reorganizar um arquivo que extendeu, durante a preparação do REORFILE, precisava informar o tamanho da alocação em blocos. Porém, na hora de preencher o parâmetro, acabei informando o tamanho em cilindros, que representa uma quantidade de espaço bem menor do que a necessária para aquela reorganização. Naquele momento, parecia apenas um detalhe de configuração, mas o resultado foi bem diferente do esperado. Quando o job iniciou o processo de reorganização, o espaço disponível não foi suficiente para realizar a operação e o job acabou dando ABEND justamente no momento em que iria reorganizar o arquivo. Como a reorganização poderia deixar o arquivo em uma situação inconsistente, foi necessário tomar alguns cuidados antes de tentar novamente. Primeiro, restaurei o backup anterior à reorganização, garantindo que o arquivo voltasse ao estado original e íntegro. Somente depois disso, corrigi o parâmetro de tamanho do REORFILE e iniciei novamente o processo de reorganização. No final, o problema foi causado por uma diferença aparentemente simples: informar o tamanho em cilindros quando o esperado era em blocos. É um daqueles erros que servem como lembrete de que, em ambiente Mainframe, pequenos detalhes em parâmetros de JCL ou de utilitários podem provocar consequências grandes.

A lição que ficou foi simples: antes de executar uma reorganização, principalmente em arquivos importantes, é fundamental conferir cuidadosamente a unidade de medida utilizada, o espaço necessário, os parâmetros de alocação e, principalmente, garantir que exista um backup válido para recuperação. Foi um daqueles momentos em que alguns segundos conferindo o parâmetro poderiam ter evitado um bom tempo de trabalho depois.

07:00:41          ***** A D A B A S  BASIC  SERVICES *****       2010-06-25
  DBID 230                   - Display File Layout -                  PDRF022
  File 176

     I Dev  LiI  Space allocated  I      From         To    I Unused
     I Type TyI  Blocks   / Cyls. I      RABN         RABN  I BLOCKS  /  Cyls.
-----I--------I-------------------I ------------------------I------------------
     I        I                   I                         I
ASSO I 8391 ACI      146        0 I     186774 -     186919 I        0        0
     I 8391 ACI       37        0 I     258077 -     258113 I        0        0
     I 8391 ACI       46        0 I     151716 -     151761 I        0        0
     I 8391 ACI       57        0 I     151762 -     151818 I        0        0
     I 8391 ACI       71        0 I     151819 -     151889 I        0        0
     I 8391 UII      110        0 I     190120 -     190229 I       66        0
     I 8391 NII     3200       17 I     186920 -     190119 I        0        0
     I 8391 NII     5540       30 I     265551 -     271090 I      807        4
     I        I                   I                         I
DATA I 8391 DSI     3175       42 I     318634 -     321808 I        0        0
     I 8391 DSI      789       10 I     424305 -     425093 I        0        0
     I 8391 DSI     2309       30 I     281722 -     284030 I        0        0
     I 8391 DSI     3532       47 I     439498 -     443029 I      891       11

Aqui esta o erro, simples, mas que vai causar um grande problema, no lugar de blocos foi colocado o tamanho em cilindros (160B) - tinha que ser 9905B

ADAORD    REORFILE
ADAORD    FILE=176
ADAORD    DSSIZE=160B
ADAORD    MAXISN=600000

O job sofreu ABEND após ultrapassar o ponto de não retorno. Como não havia espaço suficiente para concluir a reorganização, o processo não conseguiu ser finalizado corretamente e o arquivo acabou ficando corrompido. Nesse ponto, a única alternativa segura é restaurar o file anterior à reorganização e, somente depois, realizar novamente o procedimento com os parâmetros de alocação corrigidos.

1                       J E S 2  J O B  L O G  --  S Y S T E M  C P A C  --  N O
0
07.03.30 JOB00079 ---- FRIDAY,    25 JUN 2010 ----
07.03.30 JOB00079  TSS7000I DBAP055 Last-Used 25 Jun 10 06:59 System=CPAC Facil
07.03.30 JOB00079  TSS7001I Count=50978 Mode=Fail Locktime=None Name=CLAUDEMAR
07.03.30 JOB00079  $HASP373 AAFPREOR STARTED - INIT K    - CLASS S - SYS CPAC
07.03.30 JOB00079  IEF403I AAFPREOR - STARTED - TIME=07.03.30
07.04.01 JOB00079  ADAU40 00230 Point of No Return reached
07.04.01 JOB00079  ADAU41 00230 ADAORD invoked from job AAFPREOR
07.04.21 JOB00079  IEA995I SYMPTOM DUMP OUTPUT  571
    571               USER COMPLETION CODE=0034
    571              TIME=07.04.20  SEQ=34616  CPU=0000  ASID=0446
    571              PSW AT TIME OF ERROR  078D1000   800192C4  ILC 2  INTC 0D
    571                ACTIVE LOAD MODULE           ADDRESS=00015F50  OFFSET=000
    571                NAME=ADAIOS
    571                DATA AT PSW  000192BE - 00181610  0A0D0A0D  0000C96D
    571                GR 0: 00000000_80000000   1: 00000000_80000022
    571                   2: 00000000_00046A00   3: 00000000_0000000C
    571                   4: 00000000_1710ABA0   5: 00000000_00094F3F
    571                   6: 00000000_00055430   7: 00000000_00043FE4
    571                   8: 00000000_00043FE4   9: 00000000_0004EEE0
    571                   A: 00000000_00019250   B: 00000000_00044A00
    571                   C: 00000000_8000EDB0   D: 00000000_00012950
    571                   E: 00000000_8001927C   F: 00000004_00019250
    571              END OF SYMPTOM DUMP
07.04.21 JOB00079  IEF450I AAFPREOR AAFAUTID ORDFILE - ABEND=S000 U0034 REASON=
    572                     TIME=07.04.21
07.04.21 JOB00079  -                                              --TIMINGS (MI
07.04.21 JOB00079  -STEPNAME PROCSTEP    RC   EXCP   CONN    TCB    SRB  CLOCK
07.04.21 JOB00079  -ORDFILE  AAFAUTID U0034   9415  29292    .10    .00     .8
07.04.21 JOB00079  IEF404I AAFPREOR - ENDED - TIME=07.04.21
07.04.21 JOB00079  -AAFPREOR ENDED.  NAME-GERMANO              TOTAL TCB CPU TI
07.04.21 JOB00079  $HASP395 AAFPREOR ENDED
0------ JES2 JOB STATISTICS ------
-  25 JUN 2010 JOB EXECUTION DATE
-           23 CARDS READ
-       10,731 SYSOUT PRINT RECORDS
-            0 SYSOUT PUNCH RECORDS
-        1,141 SYSOUT SPOOL KBYTES
-         0.86 MINUTES EXECUTION TIME
UQS0009 - END OF DATA SET.
--------------------------------------------------------------------------------
OP=S CL=ALL IN=ALL JB=AAFPREOR,00079 DS=1 SI=SM LR=22 LL=80 PP=0 DC=
RL=999999 AD=J DE= SC= PT= SQ=C RR=0 OC= SD=2000

Restaurando do backup que foi feito desse file.

MEMBER=REST230  000015 REC SAVE:25.06.2010 07:15 BY   USERID DBAP055  R=00000001
DSN=AAB.DIBD.JCLS                                LIB=S3 VOL=PRL303 UNIT=1024
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//ABBPREST  JOB (AAFA,DIBD),GER,CLASS=S,MSGCLASS=A
//*UQ ALLOW
//* ---------------------------------------------------------
//*                   RESTORE DB OFF-LINE
//* ---------------------------------------------------------
//RESTORE  EXEC AAFAU230,TIME=1440
//DDREST1   DD   DSN=ADABAS.C.SAVE.ALL.D.G0463V00,
//         DISP=OLD,UNIT=TP35,VOL=SER=TP0644
//* ---------------------------------------------------------
//DDCARD    DD *
ADARUN PROG=ADASAV,DBID=230,MODE=SINGLE
//DDKARTE   DD *
ADASAV RESTORE FMOVE=176
ADASAV         OVERWRITE
/*

JCL da segunda reorganização - o valor do DS agora é 9905 blocos

MEMBER=REORFILE 000021 REC SAVE:25.06.2010 11:39 BY   USERID DBAP055  R=00000001
DSN=AAB.DIBD.JCLS                                LIB=S3 VOL=PRL303 UNIT=1024
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//AAFPREOR JOB (AAFP,OSB),GERMANO,CLASS=S,MSGCLASS=A TYPRUN=HOLD
//*UQ ALLOW
//* ---------------------------------------------------------------
//*                   REORGANIZA O FILE DE UM BANCO
//* ---------------------------------------------------------------
//ORDFILE  EXEC  AAFAU230,TIME=1440
//DDFILEA   DD   DSN=&&DDFILEA,DISP=(,PASS),
//          UNIT=SYSDA,VOL=SER=WRK22A,SPACE=(CYL,(1000,2))
//* ---------------------------------------------------------------
//DDCARD    DD *
ADARUN PROG=ADAORD,DBID=230
//DDKARTE   DD *
ADAORD    REORFILE
ADAORD    FILE=176
** ADAORD    ISNSIZE=3
** ADAORD    INDEXCOMPRESSION=YES
** ADAORD    NISIZE=300B
** ADAORD    UISIZE=500B
ADAORD    DSSIZE=9905B
ADAORD    MAXISN=600000
/*

Reorganizado de novo terminou ok

12:19:00          ***** A D A B A S  BASIC  SERVICES *****       2010-06-25
  DBID 230                   - Display File Layout -                  PDRF022
  File 176

     I Dev  LiI  Space allocated  I      From         To    I Unused
     I Type TyI  Blocks   / Cyls. I      RABN         RABN  I BLOCKS  /  Cyls.
-----I--------I-------------------I ------------------------I------------------
     I        I                   I                         I
ASSO I 8391 ACI      436        2 I     186774 -     187209 I        0        0
     I 8391 UII      110        0 I     151716 -     151825 I       77        0
     I 8391 NII     8740       48 I     265551 -     274290 I     3482       19
     I        I                   I                         I
DATA I 8391 DSI     9905      132 I     439498 -     449402 I     1050       14


0 Comments:

Enviar um comentário