您的位置:首页 > 数据库

SQL0964C The transaction log for the database is full (DB2 事务 日志满 清理 )

2012-08-23 10:17 176 查看
SQL0964C The transaction log for the database is full.

这个错误说明事务日志已满,查到一些解决方法:

方法一:命令行方式

把日志文件的大小和日志文件的数量扩充,如下命令 :

db2 update db cfg for DATABASE using LOGFILSIZ 7900

db2 update db cfg for DATABASE using LOGPRIMARY 30

db2 update db cfg for DATABASE using LOGSECOND 20

方法二:控制中心方式。

直接在该数据库上右键,弹出如下窗口,找到 Configure Dababase Logging Wizard,打开即可设置。

ibm官方说明:

Too many objects have been loaded into the library server and the transaction to delete rows in the library server transaction tracking table is overfilling the DB2® UDB transaction logs.

Workaround:

1. Stop the migrator process.

2. Stop all the DB2 UDB applications. The DB2 UDB command to stop all the applications is: db2 force applications all

3. Change the number of secondary log files in the DB2 UDB database configuration to a greater number such as 100 (default is 20).

4. To see the database configuration settings, enter the following command in a DB2 UDB command window: db2 get db cfg

5. To update the number of secondary log files to 100, enter the following: db2 command db2 update dbm cfg using LOGSECOND=100

6. Start the migrator process.

The error message should now not be appearing in the library server log, and the transaction to delete rows in the library server transaction tracking table should be successful.

有关日志文件的参数有如下几个:

Logprimary:主日志文件的个数;最大为为65536(页数)×4k(块大小);

www.ixdba.net

Logfilsz:每个日志文件的大小;最多不超过256;

Logsecond:第二日志文件的个数;最大不超过254;辅助日志文件在需要时分配,不再使用时系统收回。

平常只使用Logprimary的个数个日志文件,当主日志文件被用完,则启用第二日志文件个数个日志文件。如果都用光了系统就会报日志满错误。

而所谓循环日志方式,是指对主日志文件的循环利用,但是要注意,日志文件的大小必须要满最大单个事务的数据容量需求。因为在一个事务写日志的过程中是不允许循环使用的,平常最好配置到,只使用主日志,不使用第二日志,最好让数据库一天写满一个到两个日志文件。

另外,还有种方法是设置不写日志,即ALTER TABLE A ACTIVATE NOT LOGGED INITIALLY,但是据说这种方法可能会出问题,而且一旦出问题,只能DROP TABLE,无法补救。所以这种方法还是不用了。

补充:

DB2 事务日志摘要

事务是逻辑工作单元。每一个事务在事务日记文件中都存储有相应的日志记录。每个事务都有一个相应的 Redo Log 条目。Redo Log 条目将写入当前的活动日志文件。当活动日志文件变满时,它将被标记为 unavailable。此时,DB2将接着此活动日志文件另外创建一个日志文件,并继续在其中写入日志条目。当前活动日志文件变满时,DB2 将重复这一循环过程。当事务完成后(发起COMMIT 或 ROLLBACK 语句),相应的日志条目将被释放,因为不再需要将它们用于恢复数据库。

  DB2 将一直尝试将日志条目写入主要日志文件集,也就是数据库活动时间自动分配的日志文件。如果某个事务将所有主要日志文件消耗怠尽(所有主要日志文件都被标记为 unavailable),则数据库管理员将分配一个次要日志文件。当这个文件变满时,数据库管理员将再次检查主要日志文件的状态是否为 unavailable。如果是,则再分配一个次要日志文件并继续在其中写入条目。该过程将不断重复,直到所有次要日志文件都分配并写满。如果没有主要日志文件可供写入
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: