terça-feira, abril 06, 2021

NAT3074 No space on WORK dataset for complex FIND commands

Um analista tentou rodar um find em um arquivo muito grande e deu a mensagem NAT3074 - Não tem espaço no Dataset Work - o usuário disse que tinha que rodar este programa de qualquer jeito, a alternativa foi criar um novo dataset de Work maior para o banco - é um passo rápido e tranquilo de fazer;
NAT3074 No space on WORK dataset for complex FIND commands.DB/FNR 047/86      
>                                       > +  Program     DBA001 Lib DETRAN  
All    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
E 0010 FIND NUMBER BRID-CODIGO-CONTROLE-ANT BRID-COD-TRANSACAO NE 0           
   0020 WRITE *NUMBER                                                          
   0030 END                                                                    
   0040 

SYSAOS

O banco em questão tem 200 cilindros de Work:
  13:44:15          ***** A D A B A S  BASIC  SERVICES *****       2021-02-12   
  DBID 042                 - Display General DB-Layout -              PDRG002   
                                                                               
        IDeviceI    Total Number of   I      Extents  in Block   I DD-Names I   
        I Type I    Blocks  /   Cyls. I       From        To     I          I   
  ------I------I----------------------I -------------------------I----------I   
        I      I                      I                          I          I   
   ASSO I 8391 I   26999988    150000 I          1     26999988  I DDASSOR1 I   
        I      I                      I                          I          I   
   DATA I 8391 I   26309995    350800 I          1     26309995  I DDDATAR1 I   
        I      I                      I                          I          I   
   WORK I 8391 I      11996       200 I          1        11996  I DDWORKR1 I   

Como redimensionar o dataset Work

Como o dataset de WORK contém informações pertinentes a uma determinada sessão de núcleo;

A partir dos manuais.

1 - Crie o novo dataset Work com o número correto de cilindros.
2 - ADAFRM é o utilitário que formata uma nova Work. Por exemplo: ADAFRM WORKFRM SIZE=3000,DEVICE=8393
3 - Shutdown o banco de dados (Nota a função ADADEF NEWWORK não pode ser executada se existe um autorestart pendente);
4 - Execute ADADEF NEWWORK. NOTA: A antiga Work deve ser especificada neste no JCL (ou alocar uma obra fictícia do mesmo tamanho e tipo de dispositivo, formatado). ADADEF atualiza GCB do Associator com o novo tamanho e tipo de dispositivo. Por exemplo: ADADEF Newwork WORKSIZE = 3000, WORKDEV = 8393
5 - Atualize na proc do banco o novo dataset de Work;
6 - Coloque no ar o banco de dados;

Passo a Passo 1

Tirando o banco do ar
k f aafai047,adaend
JOB     NUMBER     Q J O SYST  DEST     PRI  ST      LINES  FORM  FCB  FLASH
AAFAI047 S.09687   *X   - CPAC            15              0
... 34 PERCENT SPOOL UTILIZATION.

Passo a Passo 2

Formatando a nova work
MEMBER=ADAFWORB 000019 REC SAVE:12.02.2021 15:33 BY   USERID DBA010  R=00000001
DSN=AAB.DIBD.JCLS                                LIB=S3 VOL=PRL303 UNIT=1526   
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//AAFAFRMS  JOB (AAFA,DIBD),DBA,CLASS=S,MSGCLASS=X                           
//*UQ ALLOW                                                                    
//* ------------------------------------------------------------               
//*                     DEFINE AREA DE WORK                                    
//* ------------------------------------------------------------               
//FORMAT    EXEC PGM=ADARUN                                                    
//STEPLIB   DD   DSN=ADA5.LOADLIB,DISP=SHR                                     
//* ------------------------------------------------------------               
//DDWORKR1  DD   DISP=(NEW,CATLG),DSN=ADABAS.DBID047.WORK1.NOVA,          
//          SPACE=(CYL,(0,750)),UNIT=SYSDA,VOL=SER=ADW005                      
//* ------------------------------------------------------------               
//SYSUDUMP  DD   SYSOUT=A                                                      
//DDDRUCK   DD   SYSOUT=A                                                      
//DDPRINT   DD   SYSOUT=A                                                      
//DDCARD    DD   *                                                             
ADARUN PROG=ADAFRM,DBID=047                                                    
//DDKARTE   DD   *                                                             
ADAFRM WORKFRM SIZE=750,DEVICE=8391                                            
/*

Passo a Passo 3

Rodando o ADADEF para alterar internamente dentro do banco o tamanho da work do banco
MEMBER=ADADEFZ  000012 REC SAVE:12.02.2021 15:24 BY   USERID DBA010  R=00000001
DSN=AAB.DIBD.JCLS                                LIB=S3 VOL=PRL303 UNIT=1526   
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//AAFADEF JOB (AAFA,DIBD),CLAU,CLASS=S,MSGCLASS=A TUPRUN=HOLD                  
//*UQ ACCOUNT AABS                                                             
//* ----------------------------------------------------------                 
//*                     ADADEF NEWWORK                                         
//*      ATUALIZA GCB DO ASSO COM O TAMANHO DA NOVA WORK                       
//* ----------------------------------------------------------                 
//DEF       EXEC AAFAU047                                                      
//DDCARD    DD *                                                               
ADARUN PROG=ADADEF,MODE=SINGLE,DBID=047                                        
//DDKARTE   DD *                                                               
ADADEF NEWWORK WORKSIZE=750,WORKDEV=8391                                       
/*

Passo a Passo 4

Vamos renomear a area, deixando a NOVA como Work e a Work antiga ficando como OLD, vamos colocar o novo dataset da WORK
==============================  ===============================
            FORMATADA                      RENOMEADA                
==============================  ===============================
DSN=ADABAS.DBID047.WORK1      - DSN=ADABAS.DBID047.WORK1.OLD
DSN=ADABAS.DBID047.WORK1.NOVA - DSN=ADABAS.DBID047.WORK1

Passo a Passo 5

Colocando o banco no ar
s aafai047
JOB     NUMBER     Q J O SYST  DEST     PRI  ST      LINES  FORM  FCB  FLASH
AAFAI047 S.09687    O B A                  7  H       1.387  STD
AAFAI046 S.09289   *X   - CPAC            15              0
... 34 PERCENT SPOOL UTILIZATION.

Banco online - ok - não tem nenhuma mensagem de erro no log do banco;
1                       J E S 2  J O B  L O G  --  S Y S T E M  C P A C  --  N O
0
00.13.36 STC04199 ---- FRIDAY,    22 AUG 2014 ----
00.13.36 STC04199  IEF695I START AAFAI047 WITH JOBNAME AAFAI047 IS ASSIGNED TO
00.13.36 STC04199  $HASP373 AAFAI047 STARTED
00.13.36 STC04199  IEF403I AAFAI047 - STARTED - TIME=00.13.36
00.13.37 STC04199  ADAN02 00047 Nucleus run without protection log
00.13.37 STC04199  ADAL01 00047 2014-08-22 00:13:35 CLOG not active
00.13.37 STC04199  ADAN03 00047 ADABAS coming up
00.13.37 STC04199  ADAN19 00047 Buffer flush is  a s y n c h r o n o u s
00.13.37 STC04199  ADAN01 00047 A D A B A S  V7.4.4  is active
00.13.37 STC04199  ADAN01 00047 MODE = MULTI
00.13.37 STC04199  ADAN01 00047 Running without recovery log
UQS0009 - END OF DATA SET.

0 comentários:

Enviar um comentário