设为首页 收藏本站
查看: 844|回复: 0

[经验分享] DB2 The transaction log for the database is full

[复制链接]
累计签到:5 天
连续签到:1 天
发表于 2016-11-16 04:29:34 | 显示全部楼层 |阅读模式
DB2在执行一个大的insert/update操作的时候报“The transaction log for the database is full.. ”错误,查了一下文档是DB2的日志文件满了的缘故。
 
1.连接db2服务器
  切换linux用户
 
  su - db2inst1
 
 
2.连接数据库
 
     db2 connect to 数据库名 user 用户名 using 密码
 
 
3. 首先运行下面命令来查看DB2的日志配置信息
 
[sql] view plaincopyprint? 



  • $ db2 get db cfg | grep LOG  

 
4. 注意其中的下面配置项

[plain] view plaincopyprint? 



  • Log file size (4KB)                         (LOGFILSIZ) = 1024  
  • Number of primary log files                (LOGPRIMARY) = 45  
  • Number of secondary log files               (LOGSECOND) = 20  

 
5. 此时可以通过下面的命令来修改B2的日志配置信息

[sql] view plaincopyprint? 



  • $ db2 update db cfg using LOGFILSIZ 10240  
  • $ db2 update db cfg using LOGPRIMARY 100  
  • $ db2 update db cfg using LOGSECOND 100  

 
6. 修改配置以后需要重新启动数据库实例

[plain] view plaincopyprint? 



  • $ db2stop force  
  • $ db2start  

7. 最后再次查看修改后的参数,然后重新运行insert/update操作。
 
 
 
下面稍微想想其原因,DB2数据库的日志原理:
事务日志记录数据库中所有对象和数据的改变,在早前版本中最大可达256G,其大小为( logprimary + logsecond ) * logfilsiz,其中logprimary + logsecond的值小于或等于256,logfilsiz的最大为262144,在9.5版本中,日志最大已经可以达到512G,其中logfilsz的大小更改为524286。
 
DB2数据库的日志分为主日志辅助日志,其中主日志在第一个连接到达数据库或者数据库被激活后立即分配,而辅助日志在主日志大小不够的时候动态分配。所以需要注意一点,日志所在的文件系统的大小必须大于主日志文件与辅助日志文件的大小之和。
 
DB2数据库有2种日志配置方式,循环日志与归档日志。
循环日志:这是数据库默认的日志使用方式,主日志用来记录所有的更改,当事务提交后,日志文件会被重用。当主日志文件达到限制时,辅助日志文件将被使用。这种日志方式可以进行崩溃恢复和版本恢复,不能进行前滚恢复,不支持在线备份。
当活动事务的使用空间超过主日志和辅助日志的限制或者日志空间超过磁盘可使用空间,将会得到日志满的错误。
 
归档日志:启用logarchmetd1、logarchmetd2或打开logretain参数,注意,在9.5版本中,不推荐使用logretain参数,其所有的设置值将被忽略。在数据库归档日志规划时,建议不再使用logretain的方法。日志文件将不会被删除-保持在线或者离线状态。支持前滚恢复和在线备份。
 
疑问:归档日志下,日志一直保留,持续生成新日志,为什么还会出现日志满的错误?
归档日志下,其可用的活动日志大小依然受到主日志与辅助日志大小之和的限制,所以,即使在归档日志下,日志满的场景与活动日志下是完全一样的。
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-300799-1-1.html 上篇帖子: 怎样将DB2的排序转成Java的排序 下篇帖子: 转:db2数据库的启动和关闭
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表