|Title: ||Transaction size limit exceeded (-801:28)|
|Keywords: ||transaction size,status -801:28|
A process that was doing a lot of database changes encountered this error:
Storage handler failure: VOLE028 [-801:28]
A status code -801:28 indicates the transaction size limit was exceeded.
Please review the server message log file for additional information.
A message like below is written to the server message log:
Transaction size limit exceeded, size: xxx pages, limit: xxx pages
Two size limits are implemented: A configurable "softlimit" and an internal
"hardlimit". The minimum of either value defines the max. size an uncommitted
transaction may have.
The internal "hardlimit" is determined by the half of
the configured log space and subtracting the configured checkpoint size:
configured log space / 2 - configured checkpt size
A "softlimit" may be configured with the [Config] TransactionSizeLimit
config item. By default it is set to half the size of the hardlimit.
For example, assuming a size limit of 1 GB for the log volume and a checkpt size
of 50 MB the hardlimit would be 450 MB and the default softlimit would be 225 MB.
Once the size of an uncommitted transaction reaches or exceeds the limit a
status -801:28 is returned.
The only valid options at this point are to commit or rollback the transaction.
If the status -801:28 is returned by the DBCOMMIT call the only valid option is
to rollback the transaction.
The [Config] TransactionSizeLimit config item may be used to configure
a size limit for database transactions. It is defined as below:
This configuration item may be used to specify the max. size of a database
transaction (in MB).
If set to zero, the transaction size is not limited (the hardlimit applies).
If set to -1 (the default), the size limit is set to a default value which depends
on the configured log volume space. The default value is -1.