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;
Depois de reorganizado ficou assim - tudo em uma extensão;
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;
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;
JCL que vamos deletar o arquivo do banco
JCL que vamos restaurar do backup que fizemos o file
SAVE, DELETE and RESTORE
Este foi o programa Natural que roda um job com esses três passos em um único job
Tela do programa acima
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