Após qualquer falha que faça com que o núcleo do Adabas termine de forma anormal, um procedimento automático é executado quando Adabas é reativada para trazer o banco de dados para um estado física e logicamente válido. Todos os comandos de atualização parcialmente executadas são redefinidos; todas as transações incompletas são desiste. O procedimento automático compreende três etapas: Reparando o banco de dados, auto-restart, e auto-backout:
Se um hardware ou sistema operacional onde estão o Adabas falham resulta em danos físicos para o banco de dados, poderá ser necessário ter que recriar o banco de dados usando os utilitários ADASAV e ADARES.
Falha de Energia
Dependendo do hardware, uma falha de energia durante uma operação de I/O pode danificar os blocos no Adabas que estavam a ser processados. Este dano não pode ser detectado durante a reinicialização automática e, portanto, pode resultar em problemas posteriores, como códigos de resposta inesperados ou atualizações de dados perdidos. Se o parametro ADARUN IGNDIB=YES é definido, as verificações de rotina auto-restart se um buffer flush estava ativo quando a interrupção da sessão ocorreu. Se um buffer flush estava em processo, o auto-restart dá um shut down no banco Adabas e alerta o utilizador para o problema potencial e inclui uma lista de arquivos que estão sendo atualizados quando o buffer flush estava em processo. O DBA deve, então, determinar se uma falha de energia ocorreu.
Se a causa de uma interrupção da sessão:
Uma falha no gerador e o nobreak não acionou e tivemos uma queda da energia do mainframe, na hora que foram colocar o banco Adabas no ar deu este erro;
SYN1/SYN2
O SYN1 especifica o número do bloco que contém o checkpoint SYN1 no qual a operação de backup (SAVE) correspondente começou. Já o SYN2 o regenerate começa no checkpoint até final. O regenerate começa no checkpoint final (SYN2) do backup on-line. Todos os PLOGs até o incluindo o próximo checkpoint de serviço (no qual o REGENERATE deve parar) são incluídos e os parâmetros apropriados são fornecidos à função ADARES REGENERATE. Se mais de 99 PLOGs devem ser regenerates, ADARAI gera várias etapas de trabalho REGENERATE, cada uma processando até 99 datasets de PLOG de entrada.
Formatando Work nova
A Work tem registros, para não entrar nesta situação de reparação na hora que colocarmos no ar o banco temos que formatar uma nova Work, com o mesmo tamanho que tinha antes e coloquei no proc do banco;
Depois alteramos a proc do banco e colocamos no lugar da antiga Work a nova
Restaurando o Último Backup
Vamos restaurar o banco, colocando o cartucho do backup e de PLOG, anotamos os dados do PLOGNUM e do SYN1, OVERWRITE quer dizer que vai gravar em cima dos arquivos já existentes;
Regenerate
Depois do restore do banco vamos executar o ADARES REGENERATE, este que vai pegar e deixar o banco com a situação igual até na hora que caiu, detalhe importante, como depois do backup só tivemos um PLOG (PLOGNUM=2017,FROMCP=SYN2,FROMBLK=1826095);
Deve aparecer umas mensagens que diferentes no job (normal);
- Reparação no banco modifica o banco de dados para o situação que teria tido se um buffer flush apenas se tivesse sido concluída no momento da falha. Ou seja, todos os blocos do banco de dados estão em um estado que permite que o núcleo para executar normalmente.
- Auto-Restart volta os updates para um comando de single update que foram parcialmente executadas quando o sistema falhou. Ele resolve inconsistências internas na base de dados e garante a integridade física.
- Auto-backout, que é realizado apenas para usuários de lógica ET (end transaction), voltar o anterior das atualizações de transações do usuário, que foram parcialmente executadas quando o sistema falhou. O Adabas realiza uma Backout transaction (BT), seguido de reinicialização automática, e em seguida, informa ao usuário que o da última operação foi backed out.
- A rotina de auto-backout é executado no final de uma sessão de ET (end transaction) que foi encerrado com parada. isto é também executado automaticamente no início da sessão seguinte Adabas para remover quaisquer alterações realizada dentro de transações que não completaram com sucesso.
- Após a execução automática de auto-backout, o banco de dados contém atualizações somente de forma lógica completa transações.
Se um hardware ou sistema operacional onde estão o Adabas falham resulta em danos físicos para o banco de dados, poderá ser necessário ter que recriar o banco de dados usando os utilitários ADASAV e ADARES.
Falha de Energia
Dependendo do hardware, uma falha de energia durante uma operação de I/O pode danificar os blocos no Adabas que estavam a ser processados. Este dano não pode ser detectado durante a reinicialização automática e, portanto, pode resultar em problemas posteriores, como códigos de resposta inesperados ou atualizações de dados perdidos. Se o parametro ADARUN IGNDIB=YES é definido, as verificações de rotina auto-restart se um buffer flush estava ativo quando a interrupção da sessão ocorreu. Se um buffer flush estava em processo, o auto-restart dá um shut down no banco Adabas e alerta o utilizador para o problema potencial e inclui uma lista de arquivos que estão sendo atualizados quando o buffer flush estava em processo. O DBA deve, então, determinar se uma falha de energia ocorreu.
Se a causa de uma interrupção da sessão:
- SIM é uma falha de energia, a Software AG recomenda recuperar os arquivos afetados usando os utilitários ADASAV e ADARES.
- Definitivamente NÃO é uma falha de energia e a integridade da informação sobre o hardware de saída pode ser garantida, o banco de dados pode ser reativado imediatamente. A operação de recuperação não é necessária para o banco.
Uma falha no gerador e o nobreak não acionou e tivemos uma queda da energia do mainframe, na hora que foram colocar o banco Adabas no ar deu este erro;
13:45:46 ADAN21 00330 Protection log PLOGR1 started
13:45:46 ADAN02 00330 Nucleus run with protection log 02031
13:45:46 ADAI64 File DDCLOGR1 is being opened in ECKD mode - RABN size 08904
13:45:46 ADAI64 File DDCLOGR2 is being opened in ECKD mode - RABN size 08904
13:45:46 ADAL02 00330 2017-07-13 13:45:45 CLOGR2 is active
13:45:46 ADAN03 00330 ADABAS coming up
13:45:46 ADAN55 00330 Recovery data found on Work dataset(s)
13:45:46 ADAN56 00330 Backward repair done
Parm-Error 031 detected during system open
System autorestart failed
Nucleus response = 176
Subcode = 12
File number = 144
13:45:46 ADAM97 00330 This ASCB/initiator will be terminated by MVS at EOJ
UQS0009 - END OF DATA SET.
--------------------------------------------------------------------------------
OP=S CL=ALL IN=ALL JB=AAFAI330,03017 DS=1 SI=SO LR=188 LL=80 PP=0 DC=
RL=999999 AD=J DE= SC= PT= SQ=C RR=0 OC= SD=2000
O que aconteceu, quando o banco foi colocado no ar ele encontrou na Work informações que não foram gravadas no banco, ele começou a reparar isso gravando no banco só que em determinada parte dessa reparação deu erro, aparentemente o banco Adabas caiu no meio de um Buffer Flush e o banco não conseguiu fazer o AUTORESTART por ter detectado inconsistência em um bloco, neste cenário o manual do Adabas fala que a única saída é restaurar o ultimo backup e depois usar o regenerate, a restauração você fica com o banco com a imagem no momento do backup já o regenerate pega os PLOGs e vai aplicando as atualizações/deletações/inserções e deixa o banco na mesma situação que ele estava até na hora que o acabou a energia do mainframe.
SYN1/SYN2
O SYN1 especifica o número do bloco que contém o checkpoint SYN1 no qual a operação de backup (SAVE) correspondente começou. Já o SYN2 o regenerate começa no checkpoint até final. O regenerate começa no checkpoint final (SYN2) do backup on-line. Todos os PLOGs até o incluindo o próximo checkpoint de serviço (no qual o REGENERATE deve parar) são incluídos e os parâmetros apropriados são fornecidos à função ADARES REGENERATE. Se mais de 99 PLOGs devem ser regenerates, ADARAI gera várias etapas de trabalho REGENERATE, cada uma processando até 99 datasets de PLOG de entrada.
Protection Log PLOGNUM=2017, SYN1=1791506, SYN2=1826095
Formatando Work nova
A Work tem registros, para não entrar nesta situação de reparação na hora que colocarmos no ar o banco temos que formatar uma nova Work, com o mesmo tamanho que tinha antes e coloquei no proc do banco;
MEMBER=ADAFWORK 000019 REC SAVE:13.07.2017 14:56 BY USERID DBA R=00000001
DSN=PROD.PRODUCAO.JCLS LIB=S3 VOL=PRL303 UNIT=1126
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//AAFAFRMS JOB (AAFA,DIBD),CLAUD,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.DBID330.WORK2, <=== WORK
// 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=330
//DDKARTE DD *
ADAFRM WORKFRM SIZE=750,DEVICE=8391
/*
Depois alteramos a proc do banco e colocamos no lugar da antiga Work a nova
MEMBER=AAFAI330 000019 REC SAVE:13.07.2017 14:56 BY USERID DBA R=00000001
DSN=AAB.PROCLIB LIB=S3 VOL=PRL303 UNIT=1126
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//* -----------------------------------------------------------------
//* DATA SET'S DO ADABAS
//* -----------------------------------------------------------------
//DDASSOR1 DD DISP=SHR,DSN=ADABAS.DBID330.ASSO1 <=== ASSO1
//DDASSOR2 DD DISP=SHR,DSN=ADABAS.DBID330.ASSO2 <=== ASSO2
//DDDATAR1 DD DISP=SHR,DSN=ADABAS.DBID330.DATA1 <=== DATA1
//DDDATAR2 DD DISP=SHR,DSN=ADABAS.DBID330.DATA2 <=== DATA2
//DDWORKR1 DD DISP=SHR,DSN=ADABAS.DBID330.WORK2 <=== NEW WORK MAN
//DDPLOGR1 DD DISP=SHR,DSN=ADABAS.DBID330.PLOGR1 <=== PLOG1
//DDPLOGR2 DD DISP=SHR,DSN=ADABAS.DBID330.PLOGR2 <=== PLOG2
//*
Restaurando o Último Backup
Vamos restaurar o banco, colocando o cartucho do backup e de PLOG, anotamos os dados do PLOGNUM e do SYN1, OVERWRITE quer dizer que vai gravar em cima dos arquivos já existentes;
MEMBER=REST330C 00000018 REC SAVE:13.07.2017 15:43 USER DBA R=0000000001
DSN=PROD.PRODUCAO.JCLS LIB=S3 VOL=PRL303 UNIT=1126
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//AAFPREST JOB (ABBP,DIBD),SUPORTE,CLASS=S,MSGCLASS=A TYPRUN=HOLD
//*UQ ALLOW
//* ----------------------------------------------------------------
//* RESTORE DO BANCO (BACKUP ONLINE)
//* ----------------------------------------------------------------
//RESTORE EXEC AAFAU330
//DDREST1 DD DSN=ADABAS.C.SAVE.DB330.DIA.G3119V00,
// DISP=OLD,UNIT=CVRT,VOL=SER=(VC1751,VC1757,VC1763,VC1785)
//* ----------------------------------------------------------------
//DDPLOG DD DSN=ADABAS.C.DB330.PLOG.G4783V00,
// DISP=OLD,UNIT=AFF=DDREST1,VOL=SER=VC0139
//* ----------------------------------------------------------------
//DDCARD DD *
ADARUN PROG=ADASAV,DBID=330,MODE=SINGLE,PLOGRQ=NO
//DDKARTE DD *
ADASAV RESTONL
ADASAV PLOGNUM=2017,SYN1=1791506,OVERWRITE
/*
Regenerate
Depois do restore do banco vamos executar o ADARES REGENERATE, este que vai pegar e deixar o banco com a situação igual até na hora que caiu, detalhe importante, como depois do backup só tivemos um PLOG (PLOGNUM=2017,FROMCP=SYN2,FROMBLK=1826095);
MEMBER=ADARES05 00000018 REC SAVE:13.07.2017 18:27 USER DBA R=0000000001
DSN=PROD.PRODUCAO.JCLS LIB=S3 VOL=PRL303 UNIT=1126
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//AAFPREST JOB (ABBP,DIBD),SUPORTE,CLASS=S,MSGCLASS=A TYPRUN=HOLD
//*UQ ALLOW
//* ----------------------------------------------------------------
//* ADARES : REGENERATE
//* ----------------------------------------------------------------
//RES EXEC AAFAU330
//DDSIIN DD DSN=ADABAS.C.DB330.PLOG.G4783V00, <=== PLOG TAPE
// UNIT=CVRT,DISP=OLD
//* ----------------------------------------------------------------
//DDDRUCK DD SYSOUT=X
//DDPRINT DD SYSOUT=X
//SYSUDUMP DD SYSOUT=X
//DDCARD DD *
ADARUN PROG=ADARES,SVC=249,DEVICE=8391,DBID=330,MODE=SINGLE
ADARUN LP=25000,LWKP2=3494,LU=65535,PLOGRQ=NO
//DDKARTE DD *
ADARES REGENERATE PLOGNUM=2017,FROMCP=SYN2,FROMBLK=1826095
/*
Deve aparecer umas mensagens que diferentes no job (normal);
1 J E S 2 J O B L O G -- S Y S T E M C P A C -- N O D E J E S 2
0
19.40.06 JOB03046 ---- THURSDAY, 13 JUL 2017 ----
19.40.06 JOB03046 TSS7000I DBA Last-Used 13 Jul 17 17:37 System=CPAC Facility=BATCH
19.40.06 JOB03046 TSS7001I Count=60045 Mode=Fail Locktime=None Name=CLAUDEMAR MARTINS DE SA
19.40.06 JOB03046 $HASP373 AAFPREST STARTED - INIT K - CLASS S - SYS CPAC
19.40.06 JOB03046 IEF403I AAFPREST - STARTED - TIME=19.40.06
19.40.06 JOB03046 *IEF233A M 0897,VC0139,,AAFPREST,AAFAU330,ADABAS.C.DB330.PLOG.G4783V00
19.40.06 JOB03046 *CTS009 IEF233A M 0897,VC0139,,AAFPREST,AAFAU330,ADABAS.C.DB330.PLOG.G4783V00
19.40.17 JOB03046 ADAN02 00330 Nucleus run without protection log
19.40.17 JOB03046 ADAL01 00330 2017-07-13 19:40:15 CLOG not active
19.40.17 JOB03046 ADAN03 00330 ADABAS coming up
19.40.17 JOB03046 ADAN01 00330 A D A B A S V7.4.4 is active
19.40.17 JOB03046 ADAN01 00330 MODE = SINGLE
19.40.17 JOB03046 ADAN01 00330 Running without recovery log
20.29.36 JOB03046 ADAN56 00330 Autobackout done
20.29.36 JOB03046 ADAN49 00330 2017-07-13 20:29:35
20.29.36 JOB03046 ADAEND backed out by ADARES
20.29.36 JOB03046 UID= 40404040F2F4F0F1
20.29.36 JOB03046 ADAEND backed out by ADARES
20.29.36 JOB03046 UID= C1C5F8F9F0F2F8F1
20.29.36 JOB03046 ADAEND backed out by ADARES
20.29.36 JOB03046 UID= C1C5F8F9F0F7F2F1
20.29.36 JOB03046 ADAN5A 00330 Files modified during autorestart:
20.29.36 JOB03046 ADAN5A 00330 00077 00115
20.29.40 JOB03046 IEF234E K 0897,VC0139,PVT,AAFPREST,AAFAU330
20.29.40 JOB03046 CTS014 IEF234E K 0897,VC0139,PVT,AAFPREST,AAFAU330
20.29.40 JOB03046 - --TIMINGS (MINS.)-- -----PAGING COUNTS----
20.29.40 JOB03046 -STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV WORKLOAD PAGE SWAP VIO SWAPS
20.29.40 JOB03046 -RES AAFAU330 00 5155K 729K 6.43 1.26 49.5 76042K BATCH 0 0 0 0
20.29.40 JOB03046 IEF404I AAFPREST - ENDED - TIME=20.29.40
20.29.40 JOB03046 -AAFPREST ENDED. NAME-SUPORTE TOTAL TCB CPU TIME= 6.43 TOTAL ELAPSED TIME= 49.5
20.29.40 JOB03046 $HASP395 AAFPREST ENDED
0------ JES2 JOB STATISTICS ------
Terminando coloque o banco online (ele deve ficar online sem nenhum erro);

0 comentários:
Enviar um comentário