据库报错:The transaction log for the database is full. SQLSTATE=57011

db2数据库报错:The transaction log for the database is full. SQLSTATE=57011 
2011-05-10 12:50 
做DB2的插入操作报错 

db2 => insert into atmjobsts  values ('20090805','2') 
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 

原因: 

缓冲池扩展失败,由于可用的虚拟内存的大小不足 

解决: 

1. 查看 

db2 => get db cfg 

       Database Configuration for Database 

... 

Log file size (4KB)                         (LOGFILSIZ) = 10240 
Number of primary log files                (LOGPRIMARY) = 13 
Number of secondary log files               (LOGSECOND) = 4 
Changed path to log files                  (NEWLOGPATH) = 
Path to log files                                       = /db2data/db2shjh/db2inst1/NODE0000/SQL00001/SQLOGDIR/ 
Overflow log path                     (OVERFLOWLOGPATH) = 
Mirror log path                         (MIRRORLOGPATH) = 
First active log file                                   = 
Block log on disk full                (BLK_LOG_DSK_FUL) = NO 
Percent max primary log space by transaction  (MAX_LOG) = 0 
Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = 0 

... 

2. 修改 

后来把这个参数的大小相应调整了一下,调整后如下: 
Log file size (4KB) (LOGFILSIZ) = 61440 

调整方法为 
update db cfg using LOGFILSIZ 61440 

3. 调整后重启数据库 

执行 db2stop 来停止DB2服务,如果停止不掉可以考虑执行 db2stop force 强制停止。 
执行 db2start 启动DB2服务。 

4. 查看 

Log file size (4KB)                         (LOGFILSIZ) = 61440 
Number of primary log files                (LOGPRIMARY) = 13 
Number of secondary log files               (LOGSECOND) = 4 
Changed path to log files                  (NEWLOGPATH) = 
Path to log files                                       = /db2data/db2shjh/db2inst1/NODE0000/SQL00001/SQLOGDIR/ 
Overflow log path                     (OVERFLOWLOGPATH) = 
Mirror log path                         (MIRRORLOGPATH) = 
First active log file                                   = 
Block log on disk full                (BLK_LOG_DSK_FUL) = NO 
Percent max primary log space by transaction  (MAX_LOG) = 0 
Num. of active log files for 1 active UOW(NUM_LOG_SPAN) = 0 

5. 再执行 插入操作 OK  解决 

db2 => insert into atmjobsts values('20090805','3') 
DB20000I  The SQL command completed successfully.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当在SQL Server的数据库上进行一系列的更新、插入时,SQL Server会通过事务日志(transaction log)去记录这些操作。事务日志是一个关键的组成部分,用于确保在数据库的错误情况下也能保持数据的一致性和完整性。当SQL Server运行时,它会不断往事务日志中写入记录。当事务日志的空间被占满了,就会出现"SQL Server the transaction log for database is full" (SQL Server数据库的事务日志已满)的错误信息。 发生这种情况的原因有很多种,比如数据库非常繁忙、数据库日志备份未能及时完成或备份操作未被正确定时等等。当出现这种错误时,有可能影响到当前正在进行的事务,可以尝试清理事务日志或者调整SQL Server日志文件的配置来解决问题。 可以采取以下三种方法解决该错误: 1. 增加事务日志文件的大小:可以在SQL Server Management Studio中增加事务日志文件的大小,这样增加的空间可以用于记录更多的事务日志。注意,该方法不能长期解决问题,需要不断地增加日志文件大小,才能满足数据库的需求。 2. 执行定期的日志备份: 通过定期的日志备份,可以释放事务日志中的空间,可以避免事务日志被占满。建议设置合理的备份时间和备份策略。 3. 调整日志文件的增长策略: 可以通过修改SQL Server日志文件的配置来解决问题。可以通过设置日志文件的增长策略来限制日志文件的大小,保证不会因为日志过大而出现错误。 总之,SQL Server的事务日志是保证数据完整性和一致性的重要组成部分,需要得到合理的管理和配置。当出现该错误时,需要积极的解决,以保证数据库的正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值