DB2 Logfile Limitation, SQLCODE: -964

18,128

I used the maximum values for LOGFILSIZ, LOGPRIMARY, and LOGSECOND; The max value for LOGFILSIZ may be different for windows, linux, etc. But, you can try a very big number and the DB let you know what is the max. In my case it was 262144.

Also, LOGPRIMARY + LOGSECOND <= 256. I tried 128 for each and it works for my huge query.

Share:
18,128
Afshin Moazami
Author by

Afshin Moazami

Husband; casual drummer; learning lover; passionate team member; software developer; teaching guru; wisdom seeker;

Updated on June 16, 2022

Comments

  • Afshin Moazami
    Afshin Moazami almost 2 years

    I have tried a huge insert query in DB2. INSERT INTO MY_TABLE_COPY ( SELECT * FROM MY_TABLE);

    Before that, I set the followings:

    UPDATE DATABASE CONFIGURATION FOR MY_DB USING LOGFILSIZ 70000;
    UPDATE DATABASE CONFIGURATION FOR MY_DB USING LOGPRIMARY 50;
    UPDATE DATABASE CONFIGURATION FOR MY_DB USING LOGSECOND 2;
    db2stop force;
    db2start;
    

    and I got this error:

    DB21034E  The command was processed as an SQL statement because it was not a 
    valid Command Line Processor command.  During SQL processing it returned:
    SQL0964C  The transaction log for the database is full.  SQLSTATE=57011
    
    SQL0964C  The transaction log for the database is full.
    
    Explanation: 
    
    All space in the transaction log is being used.  
    
     If a circular log with secondary log files is being used, an 
    attempt has been made to allocate and use them.  When the file 
    system has no more space, secondary logs cannot be used.  
    
     If an archive log is used, then the file system has not provided 
    space to contain a new log file.  
    
     The statement cannot be processed.  
    
    User Response: 
    
    Execute a COMMIT or ROLLBACK on receipt of this message (SQLCODE) 
    or retry the operation.  
    
     If the database is being updated by concurrent applications, 
    retry the operation.  Log space may be freed up when another 
    application finishes a transaction.  
    
     Issue more frequent commit operations.  If your transactions are 
    not committed, log space may be freed up when the transactions 
    are committed.  When designing an application, consider when to 
    commit the update transactions to prevent a log full condition.  
    
     If deadlocks are occurring, check for them more frequently.  
    This can be done by decreasing the database configuration 
    parameter DLCHKTIME.  This will cause deadlocks to be detected 
    and resolved sooner (by ROLLBACK) which will then free log 
    space.  
    
     If the condition occurs often, increase the database 
    configuration parameter to allow a larger log file.  A larger log 
    file requires more space but reduces the need for applications to 
    retry the operation.  
    
     If installing the sample database, drop it and install the 
    sample database again.  
    
     sqlcode :  -964 
    
     sqlstate :  57011 
    

    any suggestions?