IBM Support

Fixing an "SQL0964C Transaction log for database is full" error

Troubleshooting


Problem

The DB2 Transaction log (logfilsiz) value of the database will need to be increased if you encounter a transaction log full message, SQL0964C in the db2cli.log.

Symptom

SQL0964C error shows up under two conditions.
a. During data load using an ldif file which contains large entries, e.g.: entries with blob attributes or group entries with lots of members.
b. During the normal ldap server functionality with ldapadd working with large entries

The db2cli.log shows the following:

SQL0964C  The transaction log for the database is full. SQLSTATE=57011

Cause

The default value of the DB2 Transaction log (logfilsiz) value of the database configured by ITDS is 2000. This is good enough with most directory implementations but in case the above error shows up, then the logfilsiz value must be updated to have a higher value.

Diagnosing The Problem

a. The data load will fail when attempting via ldif2db
b. The entry add will fail when attempted via ldapadd - in some cases this ldapadd might be coming from a supplier system to a consumer system in replicated topology.
In both the above cases refer to db2cli.log to observe SQL0964C error when the problem happened.
Alternatively, use the bulkload utility to load files with large amounts of entries. This problem may not be visible when doing the bulkload operation.

Resolving The Problem

Use the following procedure to increase the size of the DB2 transaction log (logfilsiz):


1. Determine the current log file size setting by issuing the command:
    Unix
      su - <db2instance>
      db2 list db directory # to list the database name
      db2 connect to <databaseName>
      db2 get db config for <databaseName> | grep -i logfilsiz
    Example:
      su - ldapdb2
      db2 connect to amdb
      db2 get db config for amdb | grep -i logfilsiz
    Windows operating system
      open a DB2CMD window
      set DB2INSTANCE=<databaseName> from the ibmslapd.conf file
      db2 list db directory
      db2 connect to <databaseName>
      db2 get db config for <databaseName>
      check the value for logfilsiz
2. Increase the size of the log file size setting by issuing the command:
      db2 UPDATE db cfg for <databaseName> using LOGFILSIZ <new_value>
    Example:
      db2 UPDATE db cfg for amdb using LOGFILSIZ 5000

      NOTE: The LOGFILSIZ value is the number of 4k pages.
      and needs to be increased as appropriate for the environment.
      Tuning this may be a trial and error process

3. Stop the ibmslapd process.
ibmslapd -k -I <instance name>

4. Issue the commands:
      db2 force applications all
      db2stop force

5. Restart ibmslapd process.


[{"Product":{"code":"SSVJJU","label":"IBM Security Directory Server"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"General","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"5.2;6.0;6.1;6.2;6.3;6.3.1;6.4","Edition":"","Line of Business":{"code":"LOB24","label":"Security Software"}}]

Historical Number

WI XX001148
PMR 37340 500 000

Product Synonym

IBM Tivoli Directory Server

Document Information

Modified date:
16 June 2018

UID

swg21121437