db2事务日志满解决方法
2011-10-20 09:55:00 发表于网易博客
故障描述
在删除一个表里8万多条数据的时候报了如下错误:
SQL0964C The transaction log for the database is full,用db2 ? sql0964c查帮助,确定是事务日志满。
解决方法
增大每个事务日志文件大小,增加主日志文件数量和第二事务日志数量
db2 update db cfg for using LOGPRIMARY 50
db2 update db cfg for using LOGSECOND 20
db2 update db cfg for using LOGFILSIZ 10240
重启数据库,再删除。成功。
IBM的解答
DB2 使用的活动日志的最大空间是由下面公式:
(logprimary + logsecond) * logfilsiz * 4096
计算出的大小来决定的(logprimary,logsecond,logfilsiz是数据库配置参数)。若该空间已全部被分配,而应用仍试图请求更多活动日志空间时,就会发生日志满的情况,此时,用户的更新、删除或插入操作都会使 DB2DIAG.LOG 中写入以下信息:
SQL0964C 数据库的事务日志已满。
DB2 活动日志满通常是由于存在大量未提交事务的数据,使得活动日志的空间不能及时释放,使新的事务无法申请到可用日志空间,而最终报出 SQL0964C 的错误所致。为使应用程序成功运行,而不是被回滚,通常会考虑根据情况选择增大以上公式中的某些数据库参数,以增大活动日志空间来解决这一问