`
liumin1939
  • 浏览: 57372 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DB2数据库事务日志已满问题解决方案

    博客分类:
  • db2
阅读更多

本系列文章主要介绍数据库管理员(DBA)在日常维护中遇上一些比较紧急的情况如何处理,本篇主要介绍DB2交易日志存储空间满问题如何处理。

1、数据库事务日志的最大大小

数据库事务日志的最大大小由数据库的三个配置参数决定,分别是“主日志文件的数目”(LOGPRIMARY)、“辅助日志文件的数目”(LOGSECOND)和“日志文件大小(4KB)”(LOGFILSIZ)。数据库事务日志的最大大小的计算公式如清单 01-32 所示:


清单 1. 数据库事务日志的最大大小的计算公式

数据库事务日志的最大大小 = ( LOGPRIMARY + LOGSECOND )* LOGFILSIZ * 4KB

LOGSECOND 在这个公式中不能设为 “ -1 ” ,“ -1 ”代表你在请求一个无限的活动日志空间,数据库也不会报数据库事务日志已满错误,如果空间不足则会报日志磁盘已满错误,具体如本章第五节所述。下面我们具体看一下这三个参数:

  1. 主日志文件的数目 LOGPRIMARY
    此数据库配置参数用来指定要预分配的主日志文件个数。主日志文件建立分配给恢复日志文件的固定存储器数量。在循环日志管理模式下,数据库事务将按顺序重复使用主日志,也就是当一个主日志已满时,顺序使用下一个主日志,如果主日志已满,则按需一次分配一个辅助日志,辅助日志在使用完后,将被释放。如果你发现数据库会经常分配辅助日志文件,则可能需要通过增大日志文件大小或增大主日志文件的数目来提高系统性能。
  2. 辅助日志文件的数目 LOGSECOND
    此数据库配置参数用来指定按需分配的辅助日志文件个数。尽量不要把此参数的值设置成“ -1 ” ,“ -1 ”代表你在请求一个无限的活动日志空间,数据库也不会报数据库事务日志已满错误,如果空间不足则会报日志磁盘已满错误。
  3. 日志文件大小 LOGFILSIZ
    此数据库配置参数用来指定日志文件的大小。

2、数据库事务日志已满错误

数据库事务日志已满错误是指当前事务无法写入到活动日志中(此时主日志文件和辅助日志文件已经全部用完或者没有足够当前事务写入的空间),需要注意的是,这个错误和日志磁盘空间已满是两个概念,如果想查看日志磁盘已满错误,请参照本章第五节。数据库事务日志已满不是由于磁盘空间满引起的,而是由于没有落实的事务总体过大,超过了数据库事务日志所能容纳的最大大小所造成的。

一般系统上线之初(如果是分阶段上线,则是每次上线之初),由于经常要导大量的数据,容易出现这个问题,当出现这个问题时,直接的办法是找到引起这个错误的当前事务,终止掉这个事务即可,后续在操作时找到当前执行的事务中比较大的事务,尽量落实或回滚该事务。

一般情况下,建议大家在系统上线之初进行导数时,尽量使用 LOAD 实用程序(如果是归档日志模式,建议使用带 NONRECOVERABLE 选项的 LOAD 实用程序,否则装入完成后数据库或装入的表所在的表空间会被置于备份暂挂状态,需要做一次全备才能解除备份暂挂状态),LOAD 实用程序在装入数据时不记日志。

如果使用 IMPORT 实用程序,建议使用 COMMITCOUNT 选项。无论是循环日志模式还是归档日志模式,使用 IMPORT 实用程序导入大量数据时,都有可能报数据库事务日志已满(也就是当前导入操作产生的事务过大,使得当前活动日志满了,包括所有的主日志和辅助日志都用完了),所以为了避免数据库日志已满错误,提高并发性,可以使用 COMMITCOUNT 选项,对要导入的数据分阶段提交。比如可以将 COMMITCOUNT 参数设置为“自动”,指示 import 实用程序 内部决定何时进行落实。此外,也可以将 COMMITCOUNT 选项设置为特定数字,指示 import 实用程序 在导入指定记录数后即进行落实。

尽量避免在上线之初直接使用“ INSERT INTO … SELECT .. FROM .. ”语句,导入一个很大的事务的方式进行导数,这样会使事务非常大。另外,还可以在系统上线之初把主日志文件的数目(LOGPRIMARY)、辅助日志文件的数目(LOGSECOND)和日志文件大小(4KB)(LOGFILSIZ)三个参数调大,等系统正式上线稳定后,再调回合适的值。

如果是在正式上线后的系统,经常出现这个问题,就需要查找原因,具体的原因可能有:

  1. 数据库并发连接比较多
    这种情况下,就要考虑适当增加主日志文件的数目(LOGPRIMARY)和日志文件大小(4KB)(LOGFILSIZ)。
  2. 有人通过第三方软件或其他工具直接连接到了生产库
    在这样的情况下,就要监控数据库,看其是否经常写一些大的语句对数据库进行增删改的操作,如果是的话,建议增加数据库的控制,尽量不要让不相关的人员连接生产库(如果其他人有需要,尽量开放备份库给他们使用,而不要开放生产库,生产库尽量只给业务系统正常使用),如果你使用的是 DB2 V9.5 版本,则可以使用工作负载管理 WLM 对数据库的资源进行调配。如果使用的是 DB2 V9.5 之前的版本,则可以在数据库服务器上通过配置操作系统的方式,限制一些 IP 的访问。

当出现这样的错误时,不要尝试使用 DB2STOP FORCE 命令来强制停掉数据库,建议大家使用 FORCE APPLICATION 命令停掉引起这个错误的应用程序或者停掉所有的应用程序。也不建议大家使用 KILL 命令来杀掉任何 DB2 相关的进程。

分享到:
评论
2 楼 liumin1939 2011-01-17  
呵呵 看来哥们经验很丰富啊!这是我刚用db2时收藏的,像你说的这种情况我们实际项目中是碰到过的,也是用你说的那些方式处理的。
1 楼 智长老 2011-01-13  
很多情况下你是force不掉app的,如果这个app占用大量log,你就必须重启实例,有时候实例也停不了,就只能用db2_kill杀掉db2进程,但是在重启时会经历一个漫长的crash recovery过程(有时会数小时,根据未提交日志的大小)

相关推荐

    db2数据库事务日志

    针对DB2数据库事务日志已满的情况,可以采取以下几种解决方案: 1. **增加日志文件大小**:可以通过`db2update dbcfg for <dbname> using LOGPRIMARY 50`、`db2update dbcfg for <dbname> using LOGSECONDARY 20`...

    DB2数据库归档日志管理方案

    DB2 数据库归档日志管理方案 DB2 数据库中的日志文件管理是非常重要的,因为日志文件中包含了数据库的所有操作记录。如果日志文件没有被正确地管理,可能会导致数据库的崩溃和数据丢失。为了解决这个问题,需要对...

    解决db2事务日志已满及日志磁盘空间已满问题办法详解

    如果上述方法无法解决问题,或者当前数据库所在的磁盘空间已满,那么可以考虑通过停止造成问题的应用程序或者停止所有应用程序,然后重启数据库来解决。可以使用db2forceapplicationsall命令来强制停止所有应用程序...

    db2调整日志大小解决方案

    当面临“db2调整日志大小解决方案”的问题时,通常涉及到的是DB2数据库的日志管理,这是数据库性能优化的重要环节。日志文件主要记录了数据库的所有事务操作,用于数据恢复和保证数据一致性。 在DB2中,事务日志...

    db2死锁问题分析及解决方案

    ### DB2死锁问题分析及解决方案 #### 一、引言 在数据库管理与维护过程中,死锁问题是一个常见的挑战,特别是在使用IBM DB2这样的大型关系型数据库管理系统时。本文将详细探讨DB2中死锁问题的分析方法及有效的解决...

    Db2 11.5 新特性_高级事务日志空间管理_v3.doc

    Db2 11.5 引入了一个名为高级事务日志空间管理的新特性,这是针对“数据库事务日志已满”这一常见问题的解决方案。在传统的数据库管理中,当事务日志达到其最大容量时,可能导致数据库操作失败,严重影响系统的正常...

    DB2数据库高级教程

    此外,还将讨论高可用性解决方案,如数据库镜像、纯副本和全局事务处理,这些都能提高服务的连续性和响应速度。 “DB2数据库安全性”章节将涵盖数据库访问控制、用户权限管理、加密技术以及审计机制。理解如何设置...

    DB2数据库管理手册

    为了确保业务连续性,DB2提供了高可用性解决方案,如镜像、集群、日志流复制等。灾难恢复计划则通过定期备份和恢复策略来实现,DB2的TimeTravel和Flashback技术能够快速回溯到特定时间点的数据状态。 七、性能调优 ...

    IBM DB2通用数据库入门

    8. **高可用性**:理解DB2的高可用性解决方案,如数据库镜像、集群和复制技术,以确保服务的连续性。 9. **开发接口**:了解DB2提供的各种编程接口,如JDBC、ODBC,以及如何在Java、Python等编程语言中使用DB2。 ...

    数据库之DB2

    此外,它的恢复机制包括事务日志,能确保数据一致性,避免数据丢失。 ### 5. 安全性与合规性 DB2内置了强大的安全功能,包括用户权限管理、数据加密和审计功能。这些特性有助于满足各种合规性要求,如PCI DSS...

    DB2数据库的学习资料

    本学习资料将全面覆盖DB2的基础知识、安装配置、操作使用以及常见问题的解决方案,帮助读者掌握这款强大的数据库系统。 首先,让我们详细了解DB2的安装过程。DB2提供了多种安装选项,包括图形化界面和命令行方式。...

    Db2数据库损坏的修复过程.docx

    Db2提供了多种数据安全措施,如事务日志、日志归档、数据库备份和HADR(High Availability Disaster Recovery)。这些策略旨在保护数据免受意外损失。然而,即使有这些保护措施,不规范的操作和安全管理的疏忽仍...

    DB2数据库共享

    总之,DB2数据库系统是一个功能强大且灵活的数据库解决方案,其丰富的特性和广泛的应用场景使其在IT行业中占据重要地位。通过学习和掌握DB2,无论是开发者还是数据库管理员,都能提升自己的专业技能,为业务提供更...

    db2详解db2详解

    以上就是DB2的一些核心特性与知识点,理解并掌握这些内容,对于有效地使用和管理DB2数据库系统至关重要。无论你是数据库管理员、开发人员还是数据分析者,深入学习DB2都将为你在IT领域的职业生涯增添重要价值。

    xxx商业银行DB2数据库日常管理及性能优化案例分享-原创

    在本文中,我们将深入探讨XXX商业银行在DB2数据库日常管理及性能优化方面遇到的问题和解决方案。DB2是一款广泛应用于金融行业的高性能关系型数据库管理系统,它为处理大量交易提供了可靠的平台。 首先,我们要理解...

    DB2 数据库调优浅谈

    在进行数据库调优时,不同的视角可能会带来不同的解决方案。通常来说,可以从以下几个方面考虑: - **应用优化**:针对应用程序本身的优化,比如查询逻辑、事务管理等。 - **数据模型优化**:包括表设计、索引策略...

Global site tag (gtag.js) - Google Analytics