segunda-feira, outubro 19, 2015

NAT3047 Maximum value for Adabas parm NISNHQ exceeded

Introdução

O analista recebeu este erro no job que ele rodava - Excedeu o número de registros em "hold" permitidos pelo parm NISNHQ. Provavelmente algo na lógica do programa Natural não esta legal. Suponha que temos 5 milhões de registros no arquivo, mas apenas dez registros passem pelo IF. Você pode pensar que está deixando apenas em "hold" dez registros; ERRADO; você estaria mantendo todos os recordes em "hold" por isso que ocorre este erro.

1Logon accepted to library PROSOE.                                              
1NEXT AECP413E MS                                                               
1PAG      1                                                   22-05-15  19:02:45
0ERRO   3047                                                                    
 LINHA  4876 #EXTRATO: FC000197506599                                           
 AECP413E 5450 NAT3047 Maximum value for Adabas parm NISNHQ exceeded. DB/FNR 240
1NAT9978 Error occurred during execution/compilation.                           
UQS0009 - END OF DATA SET.                                                      
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
--------------------------------------------------------------------------------
OP=S CL=ALL IN=ALL JB=AECPA037,08631 DS=1 SI=SO LR=1 LL=80 PP=0 DC= RL=999999   
AD=J DE= SC= PT= SQ=C RR=0 OC= SD=2000   16.05.2022,  8:05:09

NAT3047

Acessando o Natural para ver o significado do erro 3047;
 08:11:31        TID    65          COM641/D          User DBAP045       16.05.22
                                 -- COM-PASS --                             USTS
        Suspended Programs                          Program Services            
 ---------------------------------       ---------------------------------------
 Programs     Name     C Level  PF       Service Description    Programs  ID  PF
 --------   --------   - -----  --       --------------------   --------  --  --
 NCF414     SYSAOS     L  1              Logon/Logoff Utility   ULOG       A    
 UPDS       A$ADASAV   U  2              System Job Queue       UQ         B    
 UQ         AAFAREDB   U  3              Text Editor Utility    UEDIT      C    
 UPDS       A$080      U  4              PDS Maint. Utility     UPDS       D    
 UQ         AECPA037   U  5 *            Natural de Producao    NATP       E    
                          6              Aplicacoes Natural     NAT2       F    
                          7              Dataset Maintenance    UDS        G    
                          8              Prog.Key Definition    UPF        H    
                          9              Mathematics Utility    UMATH      I    
                                                                                
 Enter Input:                                                   HELP       ?    
 nat2                                                                           
 -------------------------------------------------------------------------------
 LU Name: TICS0669      HC TID:               Recall: =         Language: 001   
 Devtype: 3270 V        Device: PICS2520     Suspend: <  PA1    Case    : UPPER 
 Lines  : 24               Key: PA2             Jump: NO NO                     
 Columns: 80 

? 3047
 08:11:57                    *****  NATURAL  *****                    16/05/2022
 User DBAP045                    - Main Menu -                Library SUPORTE2  
                                                                                
                                                                                
                    Function                                                    
                                                                                
                 _  Development Functions                                       
                 _  Development Environment Settings                            
                 _  Maintenance and Transfer Utilities                          
                 _  Debugging and Monitoring Utilities                          
                 _  Example Libraries                                           
                 _  Other Products                                              
                 _  Help                                                        
                 _  Exit Natural Session                                        
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
 Command ===> ? 3047                                                            
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       Help        Exit                                                  Canc   

Excedeu o valor maximo do parametro NISHQ - Hold Queue Limit
 08:12:16               ***** NATURAL HELP UTILITY *****              16/05/2022
 Library SUPORTE2      - Natural System Message NAT3047 -             Page 1    
                                                                                
    Maximum value for Adabas parm NISNHQ exceeded. DB/FNR :1:/:2:               
                                                                                
 Tx *** Short Text ***                                                          
                                                                                
    Maximum value for Adabas parameter NISNHQ was exceeded.                     
                                                                                
 Ac *** Recommended Action ***                                                  
                                                                                
    Contact your database administrator.                                        
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                    Last Page   
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       Help  Menu  Exit        Print                                     Canc

Soluções do NAT3047

Temos 3 alternativas, a primeira é fazer uma alteração no programa natural as outras duas restantes são para alterar o parametro NISNHQ do banco;

Solução 1

Ao rodar o programa dava este erro:
 NAT3047 Maximum value for Adabas parm NISNHQ exceeded. DB/FNR 230/422          
 >                                       > +  Program     TLMSTDD1 Lib FITOTECA 
 All    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
   0010 * -------------------------------------------------------------------- *
   0020 * FUNCAO..: DELETANDO REGISTROS                                        *
   0030 * -------------------------------------------------------------------- *
   0040 DEFINE DATA LOCAL                                                       
   0050 1 TLMS        VIEW OF AAFU-FITOTECA-TLMS                                
   0060   2 AAF-DSN                                                             
   0070 1 #RECCOUNT (N5)                                                        
   0080 END-DEFINE                                                              
   0090 /* DELETE ALL RECORDS FROM TLMS                                         
 E 0100 R1. READ TLMS BY AAF-DSN                                                
   0110   DELETE(R1.)                                                           
   0120   COMPUTE #RECCOUNT = #RECCOUNT + 1                                     
   0130   END-READ                                                              
   0140   END TRANSACTION                                                       
   0150 /*
   0160 END                                                                     
   0170                                                                         
   0180                                                                         
   0190                                                                         
   0200                                                                         
        ....+....1....+....2....+....3....+....4....+....5....+... S 16   L 1   

Foi feita algumas alterações para rodar - e rodou sem dar o erro NAT3047
 >                                       > +  Program     TLMSTDD1 Lib FITOTECA 
 All    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
   0010 * -------------------------------------------------------------------- *
   0020 * FUNCAO..: DELETANDO REGISTROS - GLOBALS SM=OFF                       *
   0030 * -------------------------------------------------------------------- *
   0040 DEFINE DATA LOCAL                                                       
   0050 1 TLMS        VIEW OF AAFU-FITOTECA-TLMS                                
   0060   2 AAF-DSN                                                             
   0070 1 RECCOUNT (N5)                                                         
   0080 END-DEFINE                                                              
   0090 /* DELETE ALL RECORDS FROM TLMS                                         
   0100 R1. READ TLMS BY AAF-DSN                                                
   0110   GET               TLMS     *ISN(R1.)                                  
   0120   DELETE(0110)                                                          
   0130   COMPUTE RECCOUNT = RECCOUNT + 1                                       
   0140   IF RECCOUNT > 50 DO                                                   
   0150     END TRANSACTION                                                     
   0160   DOEND                                                                 
   0170   RESET RECCOUNT                                                        
   0180   END TRANSACTION                                                       
   0190 /*
   0200 END                                                                     
        ....+....1....+....2....+....3....+....4....+....5....+... S 20   L 1

Solução 2

Se não for possivel alterar a lógica de programação (por ter somente o objeto do programa) a única alternativa é alterar o NISNHQ - dá para mudar esse parametro online pelo SYSAOS - Opção A
  08:09:12          ***** A D A B A S  BASIC  SERVICES *****          2022-05-16
  Isolated                       -  Main Menu  -                      PMAIN02   
                                                                                
                                                                                
               Code  Basic Services              Code  Other Services           
               ----  ----------------------      ----  ---------------------    
                A    Session monitoring           1    Adabas Cache Facility    
                C    Checkpoint maintenance       2    Delta Save Facility      
                F    File maintenance             3    Trigger Maintenance      
                M    Database maintenance         4    AOS Security             
                O    Session opercoms             5    Transaction Manager      
                R    Database report              6    Adabas Statistics        
                S    Space calculation            7    Vista                    
                ?    Help                         8    Fastpath                 
                .    Exit                         9    SAF Security             
               ----  ----------------------      ----  ---------------------    
                                                                                
   Code ....... a                                                               
   Database ... 240     (DB.PROD.PRODUCAO)                                      
                    
  Command ==>                                                                   
  PF1----- PF2------ PF3------ PF4------ PF6----- PF7----- PF8----- PF12-----   
  Help               Exit

Opção P
  08:09:22          ***** A D A B A S  BASIC  SERVICES *****          2022-05-16
                             -  Session Monitoring  -                 PAC0002   
                                                                                
                                                                                
   Code   Service                         Code   Service                        
   ----   --------------------------      ----   ----------------------------   
    A     Display cluster members          R     Refresh nucleus statistics     
    C     Maintain user profiles           S     Current resource statistics    
    D     Display parameters               T     Maintain TCP/IP URL            
    I     Display installed products       U     Display resource utilization   
    P     Modify parameters                V     Replicator Management          
    Q     Display queues                   Z     Display maintenance levels     
    ?     Help                                                                  
    .     Exit                                                                  
   ----   --------------------------      ----   ----------------------------   
                                                                                
          Code ......... p                                                      
          Database ID .. 240     (DB.PROD.PRODUCAO)                             
                                                                                
                                                                                
  Command ==>                                                                   
  PF1----- PF2------ PF3------ PF4------ PF6----- PF7----- PF8----- PF12-----   
  Help               Exit                                           Menu 

Primeira Tela (enter)
  08:09:30          ***** A D A B A S  BASIC  SERVICES *****          2022-05-16
  DBID 240                   -  Modify Parameters  -                  PACP002   
                                                                                
  Modify parameters below, as required:                                         
   -------------- Pools --------------  ------------- Queues ------------------ 
   Sort Area         (LS).. 2048000     Command Queue          (NC) .. 1500     
   Int. User Buffer  (LU).. 65535       Hold Queue             (NH) .. 3000     
   Buffer Pool      (LBP).. 143378432   User Queue             (NU) .. 3000     
   Format Pool      (LFP).. 32768000    ------------ Time Windows ------------- 
   ISN List Table    (LI).. 400000      Transaction Time       (TT) .. 420      
   Seq. Cmd. Table   (LQ).. 150000      Max Transaction Time (MXTT) .. 3600     
   Work Pool        (LWP).. 48128000    Nonactivity ACC-User (TNAA) .. 900      
   Attached Buffer  (NAB).. 800         Nonactivity ET-User  (TNAE) .. 900      
   Security Pool    (LCP).. 10000       Nonactivity EXU-User (TNAX) .. 120      
   UQ-DE Pool    (LDEUQP).. 50000       Max Nonactivity Time(MXTNA) .. 3600     
   Flush I/O Pool (LFIOP).. 35840000    Time Limit Sx-Cmds (TLSCMD) .. 3600     
   Err. Recovery (MSGBUF).. 0           Max Time for Sx-Cmds(MXTSX) .. 3600     
                                        Command Time           (CT) .. 300      
                                        SYNS60 Interval    (INTNAS) .. 3600     
                                                                                
                                                                     Page 1 of 3
  PF1----- PF2------ PF3------ PF4------ PF6----- PF7----- PF8----- PF12-----   
  Help               Exit                                  +        Menu        

Segunda enter - Hold Queue Limit (NISNHQ) - esta é a tela que podemos alterar
  08:08:52          ***** A D A B A S  BASIC  SERVICES *****          2022-05-16
  DBID 240                   -  Modify Parameters  -                  PACP002   
                                                                                
  Modify parameters below, as required:                                         
   --------- Miscellaneous -----------   -------- User Specific Limits ---------
   ReadOnly session (READONLY) .. NO     Hold Queue Limit  (NISNHQ) .. 750      
   UTI only session  (UTIONLY) .. NO     CIDs per User      (NQCID) .. 250      
   OPEN required      (OPENRQ) .. NO     ISNs / TBI Element (NSISN) .. 250      
   Ignore DIB Entry   (IGNDIB) .. NO     ------------ Buffer Pool --------------
   Local nucleus       (LOCAL) .. YES    Bufferflush Dur.  (TFLUSH) .. 7        
   Number of Threads      (NT) .. 55     Parallel LFIOP I/O (FMXIO) .. 1        
   Non DE Search      (NONDES) .. NO     Async. by Vol-Ser (ASYTVS) .. YES      
   Log AOS/DBS Update (AOSLOG) .. NO     ------------ Replication --------------
   Batch Support       (BATCH) .. NO     Replication (REPLICATION) ... NO       
   Data Protection Area   (LP) .. 25000                                         
   Ignore Work Part 4 (IGNDTP) .. NO                                            
   WORK-Part-4 Area     (LDTP) .. 0                                             
   WORK-Part-2 Area    (LWKP2) .. 3494                                          
   SVC                   (SVC) .. 249                                           
                                                                                
                                                                     Page 2 of 3
  PF1----- PF2------ PF3------ PF4------ PF6----- PF7----- PF8----- PF12-----   
  Help               Exit                         -        +        Menu 

Solução 3

Se você não tiver o SYSAOS - dá para alterar o ADARUN do banco - o único problema que temos que tirar do ar e voltar o banco para ele poder assumir este novo valor;
 D                                                                              
MEMBER=ADAP070  000055 REC SAVE:28.06.2018 15:58 BY   USERID DBAP045  R=00000033
DSN=AAB.DIBD.ADAPARM1                            LIB=S2 VOL=PRL301 UNIT=1524    
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
ADARUN NISNHQ=750       <=== NUMBER OF ISNS IN HOLD QUEUE F/USER        /97     
ADARUN NONDES=NO        <=== DISALOW SEARCHES USING NONDESCRIPTORS 9/3/4/97     
ADARUN NQCID=75         <=== NUMBER OF CID PER USER * 10                        
ADARUN NSISN=250        <=== NUMBER OF ISNS PER TBI ELEMENT * 200               
ADARUN NT=3             <=== NUMBER OF THREADS * 13 - 04/07/2013                
ADARUN NU=1500          <=== NUMBER OF USER QUEUE ELEMENTS                      
ADARUN OPENRQ=NO        <=== OPEN COMMAND REQUIRED                              
ADARUN PREFETCH=NO      <=== PREFETCH FEATURE                                   
ADARUN READONLY=NO      <=== READ ONLY SESSION                                  
ADARUN TFLUSH=7         <=== TIME OF SYNC. BUFFER FLUSH (SECS)                  
ADARUN TLSCMD=300       <=== TIME LIMIT FOR SX COMMANDS (SECS)                  
ADARUN TNAA=900         <=== NON-ACTIVITY TIME LIMIT (ACCESS ONLY USER)         
ADARUN TNAE=900         <=== NON-ACTIVITY TIME LIMIT (ET LOGIC USER)            
ADARUN TNAX=120         <=== NON-ACTIVITY TIME LIMIT (EXCLUSIVE UPDATE)         
ADARUN TT=420           <=== TRANSACTION TIME LIMIT (SECS) ANT 300**            
ADARUN UTIONLY=NO       <=== UTILITIES ONLY SESSION                             

0 comentários:

Enviar um comentário