terça-feira, agosto 04, 2020

Reorganizando files no Adabas mais rápido

Os arquivos do Adabas quando criamos ele temos que definir os tamanhos os parametros que ele vai usar do ASSO (UI, NI) e de DATA (DS), quando essas alocações enchem o Adabas dá automaticamente outra alocação para o arquivo, no Adabas versão 7.4.4 essas alocações podem se extender até 5 vezes, chegando em 5 extenções o usuário não consegue mais inserir registros no arquivo recebendo a mensagem Natural 3075 (No more ASSO/DATA extents available). Abaixo temos o arquivo 401 do banco 222 que tem 4 extenções de NI - 4 extenções de DS - AC tem 3 extenções;

  11:16:10          ***** A D A B A S  BASIC  SERVICES *****       2020-08-02
  DBID 222                   - Display File Layout -                  PDRF022
  File 401

     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    82536      458 I    6906299 -    6988834 I        0        0
     I 8391 ACI    20635      114 I   27136521 -   27157155 I        0        0
     I 8391 ACI    25793      143 I   25139015 -   25164807 I        0        0
     I 8391 UII    21549      119 I    6988835 -    7010383 I     9079       50
     I 8391 NII  1477054     8205 I    7010384 -    8487437 I        0        0
     I 8391 NII   207721     1154 I   26421789 -   26629509 I        0        0
     I 8391 NII   263994     1466 I   28669443 -   28933436 I        0        0
     I 8391 NII   274056     1522 I   24758828 -   25032883 I   162097      900
     I        I                   I                         I                  
DATA I 8391 DSI  2411513    32153 I   12368479 -   14779991 I        0        0
     I 8391 DSI   339130     4521 I   32008034 -   32347163 I        0        0
     I 8391 DSI   386820     5157 I   35470413 -   35857232 I        0        0
     I 8391 DSI   784884    10465 I   38133285 -   38918168 I   746330     9951
     
                                                                               
                                                                               
  PF1----- PF2------ PF3------ PF4------ PF6----- PF7----- PF8----- PF12-----   
  Help               Exit      Refresh                              Menu       


Depois de reorganizado ficou assim - tudo em uma extensão;

  11:36:56          ***** A D A B A S  BASIC  SERVICES *****       2020-08-02   
  DBID 222                   - Display File Layout -                  PDRF022   
  File 401                                                                     
                                                                               
     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   128964      716 I   26421789 -   26550752 I        0        0
     I 8391 UII    21549      119 I   25139015 -   25160563 I    15502       86
     I 8391 NII  2222825    12349 I   32581998 -   34804822 I   817751     4543
     I        I                   I                         I                  
DATA I 8391 DSI  3922347    52297 I   39098262 -   43020608 I   686861     9158
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
 PF1----- PF2------ PF3------ PF4------ PF6----- PF7----- PF8----- PF12-----  
 Help               Exit      Refresh                              Menu    

Para reorganizar temos duas alternativas

REORFILE

Este é o JCL para reorganizar o file 401 usando o utilitário REORFILE - o único problema que o REORFILE demora muito em arquivos grandes - já teve arquivos que o job rodou por duas horas;
//AAFPFILE JOB (AAFP,OSB),HIDEO,CLASS=S,MSGCLASS=A TYPRUN=HOLD                
//*UQ ALLOW                                                                    
//* --------------------------------------------------------                  
//*           REORGANIZACAO DE FILE DE DB ADABAS                              
//* --------------------------------------------------------                  
//ORDFILE   EXEC  AAFAU222,TIME=1440                                          
//DDFILEA   DD   DSN=AAF.C.REORF.F401.DB222,                                  
//          DISP=(NEW,KEEP),UNIT=TP35,LABEL=(1,SL)                            
//* --------------------------------------------------------                  
//DDCARD    DD *                                                              
ADARUN PROG=ADAORD,DBID=222                                                    
//DDKARTE   DD *                                                              
ADAORD    REORFILE                                                            
ADAORD    FILE=401                                                            
** ADAORD    ISNSIZE=4                                                        
** ADAORD    INDEXCOMPRESSION=YES                                              
** ADAORD    NISIZE=10000B                                                    
** ADAORD    UISIZE=86B                                                        
** ADAORD    DSSIZE=60000B                                                    
** ADAORD    MAXISN=3000000                                                    
/*

SAVE, DELETE and RESTORE

Um procedimento que é bem mais rápido que o REORFILE é o SAVE, DELETE e o RESTORE do file, teve arquivos grande que foram bem mais rapidos que em relação do REORFILE - O problema que rodamos 3 jobs para fazer cada um deles;

o JCL que vamos salvar o arquivo em cartucho;


MEMBER=A$SAVEFI 000014 REC SAVE:04.04.2020 23:33 BY   USERID DBA035  R=00000001
DSN=ADA.JCLS.DISP                                LIB=S3 VOL=PRL303 UNIT=1526    
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//AAFPSAVE JOB (AAFP,DIBD),CLAUD,CLASS=S,MSGCLASS=A TYPRUN=HOLD                 
//*UQ ALLOW                                                                     
//* ------------------------------------------------------------                
//*                   SALVAR FILE EM CARTUCHO                                   
//* ------------------------------------------------------------                
//SAVE     EXEC AAFAU222,TIME=1440                                              
//DDSAVE1   DD DSN=ADABAS.C.SAVE.DB222.F401,                                    
//          DISP=(NEW,KEEP),UNIT=CVRT,LABEL=(1,SL)                              
//* -------------------------------------------------------------               
//DDCARD    DD *                                                                
ADARUN PROG=ADASAV,DBID=222                                                     
//DDKARTE   DD *                                                                
ADASAV SAVE FILE=401,UTYPE=EXU                                                  
/* 

JCL que vamos deletar o arquivo do banco


MEMBER=ADADBSD  000288 REC SAVE:07.02.2016 09:04 BY   USERID DBA035  R=00000001
DSN=ADA.JCLS.DISP                                LIB=S3 VOL=PRL303 UNIT=1526    
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//AAFSNATB JOB (AAFA,DIBD),CLAU,CLASS=S,MSGCLASS=A TYPRUN=HOLD                  
//*UQ ALLOW                                                                     
//* ----------------------------------------------------                        
//*  DELETAR FILE                          
//* ----------------------------------------------------                        
//ADADBS   EXEC AAFAU222                                                        
//DDCARD   DD *                                                                 
ADARUN PROG=ADADBS,DBID=222,PLOGRQ=NO                               
ADARUN LP=25000,LWKP2=3494                                                      
//DDKARTE  DD *                                                                 
ADADBS DELETE FILE=401                                                           
/*

JCL que vamos restaurar do backup que fizemos o file


MEMBER=A$RESTOA 000014 REC SAVE:03.08.2020 08:41 BY   USERID DBA035  R=00000001
DSN=ADA.JCLS.DISP                                LIB=S3 VOL=PRL303 UNIT=1526    
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//AAFPREST JOB (AAFP,DIBD),CLAUDIO,CLASS=S,MSGCLASS=A                           
//*UQ ALLOW                                                                     
//* -----------------------------------------------------------                 
//*                 RESTAURAR ARQUIVO NO BANCO                                  
//* -----------------------------------------------------------                 
//REST     EXEC AAFAU222,TIME=1440                                              
//DDREST1   DD DSN=ADABAS.C.SAVE.DB222.F401,                                    
//          DISP=OLD,UNIT=CVRT,VOL=SER=VC0300,LABEL=(1,SL)                      
//* -----------------------------------------------------------                 
//DDCARD    DD *                                                                
ADARUN PROG=ADASAV,DBID=222,PLOGRQ=NO                                           
//DDKARTE   DD *                                                                
ADASAV RESTORE FMOVE=401                                                        
/*                                                                              

SAVE, DELETE and RESTORE

Este foi o programa Natural que roda um job com esses três passos em um único job


 >                                       > +  Program     DBAPJ867 Lib ADABAS 
 Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
   0010 * ------------------------------------------------------------------- * 
   0020 * FUNCAO: REORFILE - REORGANIZANDO UM FILE DO BANCO ADABAS            * 
   0030 *         PROCEDIMENTO DE BACKUP, DELETE E RESTORE DE UM FILE ADABAS  * 
   0040 *         ANTES RODAVA 3 FILE EM SEPARADO PARA FAZER TUDO ISSO        * 
   0050 * ------------------------------------------------------------------- * 
   0060 *  AUTOR: CLAUDEMAR MARTINS DE SA                                     * 
   0070 * ------------------------------------------------------------------- * 
   0080 DEFINE DATA LOCAL                                                       
   0090 1 #CALLER   (A4) INIT <'NAT '>                                          
   0100 1 #JOBNUM   (A8)                                                        
   0110 1 REDEFINE #JOBNUM                                                      
   0120   2 #JOBA   (A3)                                                        
   0130   2 #JOBN   (N5)                                                        
   0140 1 #I        (P3)                                                        
   0150 1 #RC       (B4)                                                        
   0160 1 #TOT      (B2)                                                        
   0170 1 #ARQ      (A32) INIT <'ADABAS.C.REORFILE.DBXXX.FXXX'>                 
   0180 1 #DBID     (A3)                                                        
   0190 1 #FILE     (N3)                                                        
   0200 1 #LP       (N9)                                                        
   0210 1 #LWKP2    (N9)                                                        
   0220 1 #C01 (A80) INIT                                                       
   0230  <'//AAFAREDB JOB (XXXX,OSB),XXXXXXX,CLASS=S,MSGCLASS=A,TYPRUN=HOLD'>   
   0240 1 REDEFINE #C01                                                         
   0250   2 FILLER  2X                                                          
   0260   2 #JOBNAME (A8)                                                       
   0270   2 #FIL1 (A06)                                                         
   0280   2 #ACC  (A04)                                                         
   0290   2 #FIL2 (A06)                                                         
   0300   2 #USER (A07)                                                         
   0310 1 #C02 (A80) INIT <'//*UQ ALLOW'>                                       
   0320 1 #C03 (A80) INIT                                                       
   0330  <'//* -----------------------------------------------------'>          
   0340 1 #C04 (A80) INIT                                                       
   0350   <'//*          REORGANIZAR FILE ADABAS - PROCESSO RAPIDO'>            
   0360 1 #C05 (A80) INIT                                                       
   0370   <'//* -----------------------------------------------------'>         
   0380 1 #C06 (A80)                                                            
   0390 1 #C07 (A80)                                                            
   0400 1 #C08 (A80) INIT                                                       
   0410  <'//          DISP=(NEW,CATLG),UNIT=CVRT,LABEL=(1,SL),'>               
   0420 1 #C09 (A80) INIT                                                       
   0430  <'//          VOL=(,RETAIN)'>                                          
   0440 1 #C10 (A80) INIT                                                       
   0450   <'//* -----------------------------------------------------'>         
   0460 1 #C11 (A80) INIT                                                       
   0470   <'//DDCARD    DD *'>                                                  
   0480 1 #C12 (A80)                                                            
   0490 1 #C13 (A80) INIT <'//DDKARTE   DD *'>                                  
   0500 1 #C14 (A80)                                                            
   0510 1 #C15 (A80) INIT <'/*'>                                                
   0520 1 #C16 (A80) INIT                                                       
   0530   <'//* -----------------------------------------------------'>         
   0540 1 #C17 (A80) INIT                                                       
   0550   <'//*                        DELETAR FILE'>                           
   0560 1 #C18 (A80) INIT                                                       
   0570   <'//* -----------------------------------------------------'>         
   0580 1 #C19 (A80)                                                            
   0590 1 #C20 (A80) INIT <'//DDCARD   DD *'>                                   
   0600 1 #C21 (A80)                                                            
   0610 1 #C22 (A80)                                                            
   0620 1 #C23 (A80) INIT <'//DDKARTE  DD *'>                                   
   0630 1 #C24 (A80)                                                            
   0640 1 #C25 (A80) INIT                                                       
   0650   <'//* -----------------------------------------------------'>         
   0660 1 #C26 (A80) INIT                                                       
   0670   <'//*                 RESTAURAR ARQUIVO NO BANCO'>                    
   0680 1 #C27 (A80) INIT                                                       
   0690   <'//* -----------------------------------------------------'>         
   0700 1 #C28 (A80)                                                            
   0710 1 #C29 (A80)                                                            
   0720 1 #C30 (A80) INIT <'//DDCARD    DD *'>                                  
   0730 1 #C31 (A80)                                                            
   0740 1 #C32 (A80) INIT <'//DDKARTE   DD *'>                                  
   0750 1 #C33 (A80)                                                            
   0760 1 #C34 (A80) INIT <'/*'>                                                
   0770 1 #Y2K (A1)  INIT <'N'>                                                 
   0780 END-DEFINE                                                              
   0790 * ==================================================================== *
   0800 FORMAT KD=ON                                                            
   0810 SET CONTROL 'U'                                                         
   0820 SET KEY PF3 NAMED 'MENU'                                                
   0830   PF8 NAMED '    ' PF9 NAMED '     '                                    
   0840 MOVE *INIT-USER TO #USER                                                
   0850 REPEAT                                                                  
   0860 *  RESET #ARQ                                                           
   0870   RESET INITIAL #Y2K                                                    
   0880 * ==================================================================== *
   0890   INPUT (IP=OFF SG=OFF AD=MIL'_')                                       
   0900     02T '-' (78)                                                        
   0910     /       02T *USER                                                   
   0920     35T 'DBA ADABAS' (I)                  
   0930     72T  *PROGRAM                                                       
   0940     /       02T  *TIME(AL=8)                                            
   0950     11T '-' (60)                                                        
   0960     72T  *DATE                                                          
   0970 /      28T 'BACKUP, DELETE/RESTORE' (I)                                 
   0980 *                                                                       
   0990 //                                                                      
   1000 06T '+----------------------------------------------------------------+'
   1010 /                                                                       
   1020 06T '|                                                                |'
   1030 /                                                                       
   1040 06T '|   DBID do Banco Adabas .....: ' #DBID                            
   1050 '                            |'                                         
   1060 /                                                                       
   1070 06T '|   INFORME O numero do file .: ' #FILE                            
   1080 '                            |'                                         
   1090 /                                                                       
   1100 06T '|   INFORME O LP .............: ' #LP                              
   1110 '                      |'                                               
   1120 /                                                                       
   1130 06T '|   INFORME O LWKP2 ..........: ' #LWKP2                           
   1140 '                      |'                                               
   1150 /                                                                       
   1160 06T '|                                                                |'
   1170 /                                                                       
   1180 06T '|   (*) Todos campos sao obrigatorios                            |'
   1190 /                                                                       
   1200 06T '|                                                                |'
   1210 /                                                                       
   1220 06T '+----------------------------------------------------------------+'
   1230 //28T'TECLE PF3 PARA VOLTAR'(I)                                         
   1240   IF *PF-KEY EQ 'PF3'                                                   
   1250     FETCH 'DBAPC070'                                                    
   1260   END-IF                                                                
   1270 * ==================================================================== *
   1280 IF #DBID = '   '                                                        
   1290   REINPUT 'Digite o DBID DO BANCO' MARK *#DBID ALARM                    
   1300 END-IF                                                                  
   1310 * ==================================================================== *
   1320 IF #FILE     = 0                                                        
   1330   REINPUT 'Digite o NUMERO DO FILE' MARK *#FILE     ALARM               
   1340 END-IF                                                                  
   1350 * ==================================================================== *
   1360   IF #LP = 0                                                            
   1370     REINPUT 'Digite o valor de LP do banco' MARK *#LP  ALARM            
   1380   END-IF                                                                
   1390 * ==================================================================== *
   1400   IF #LWKP2 = 0                                                         
   1410     REINPUT 'Digite o valor de LWKP2 do banco' MARK *#LWKP2 ALARM       
   1420   END-IF                                                                
   1430 * ==================================================================== *
   1440 * BACKUP PARAMETERS                                                    *
   1450 * ==================================================================== *
   1460  COMPRESS '//ADASAVE  EXEC AAFAU' #DBID ',TIME=1440'                    
   1470  INTO #C06 LEAVING NO                                                   
   1480 * =====                                                                 
   1490  COMPRESS '//DDSAVE1   DD DSN=CSA.C.' 'DB' #DBID '.F' #FILE '.D'        
   1500  *DAT4J '.T' *TIMN ','                                                  
   1510  INTO #C07 LEAVING NO                                                   
   1520 * =====                                                                 
   1530   COMPRESS 'ADARUN PROG=ADASAV,DBID=' #DBID INTO #C12 LEAVING NO        
   1540 * =====                                                                 
   1550   COMPRESS 'ADASAV SAVE FILE=' #FILE ',UTYPE=EXU' INTO #C14 LEAVING NO  
   1560 * ==================================================================== *
   1570 * DELETE FILE PARAMETERS                                               *
   1580 * ==================================================================== *
   1590   COMPRESS '//ADADBS   EXEC AAFAU' #DBID INTO #C19 LEAVING NO           
   1600   COMPRESS 'ADARUN PROG=ADADBS,DBID=' #DBID ',PLOGRQ=NO'                
   1610   INTO #C21 LEAVING NO                                                  
   1620   COMPRESS 'ADARUN LP=' #LP ',LWKP2=' #LWKP2 INTO #C22 LEAVING NO       
   1630   COMPRESS 'ADADBS DELETE FILE=' #FILE INTO #C24 LEAVING NO             
   1640 * ==================================================================== *
   1650 * RESTORE PARAMETERS                                                   *
   1660 * ==================================================================== *
   1670   COMPRESS '//RESTORE  EXEC AAFAU' #DBID                                
   1680   ',TIME=1440' INTO #C28 LEAVING NO                                     
   1690 *                                                                       
   1700 COMPRESS '//DDREST1   DD DSN=CSA.C.' 'DB' #DBID '.F' #FILE '.D'         
   1710  *DAT4J '.T' *TIMN ',DISP=OLD'                                          
   1720 *                                               
   1730 INTO #C29 LEAVING NO                                                    
   1740 **************************************************************          
   1750   COMPRESS 'ADARUN PROG=ADASAV,DBID=' #DBID ',PLOGRQ=NO'                
   1760 INTO #C31 LEAVING NO                                                    
   1770   COMPRESS 'ADASAV RESTORE FMOVE= ' #FILE INTO #C33 LEAVING NO          
   1780 * ==================================================================== *
   1790   COMPUTE #TOT = 34 * 80                                                
   1800   CALL 'RJE' #RC #C01 #TOT                                              
   1810   CALL 'GETJOB' #JOBNUM #CALLER                                         
   1820 * ==================================================================== *
   1830   INPUT NO ERASE 19/17 'JOB ' #JOBNAME(AD=IO) 'DE N.' #JOBN(AD=IO)      
   1840     '  Submetido OK.'                                                   
   1850 //27T'TECLE ENTER PARA VOLTAR'(I)                                       
   1860 *   FETCH 'DBAPC070'                                                    
   1870 END-REPEAT                                                              
   1880 END                                                                     
        ....+....1....+....2....+....3....+....4....+....5....+... S 188  L 169 

Tela do programa acima

  ------------------------------------------------------------------------------
  DBA035                           DBA ADABAS                           DBAPJ867
  11:49:23 ------------------------------------------------------------ 04/08/20
                            BACKUP, DELETE/RESTORE                              
                                                                                
      +----------------------------------------------------------------+        
      |                                                                |        
      |   DBID do Banco Adabas .....:  ___                             |        
      |   INFORME O numero do file .:  0__                             |        
      |   INFORME O LP .............:  0________                       |        
      |   INFORME O LWKP2 ..........:  0________                       |        
      |                                                                |        
      |   (*) Todos campos sao obrigatorios                            |        
      |                                                                |        
      +----------------------------------------------------------------+        
                                                                                
                            TECLE PF3 PARA VOLTAR                               
                                                                                
                                                                                
                                                                                
                                                                                
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
                   MENU                          

0 comentários:

Enviar um comentário