`
liumin1939
  • 浏览: 56159 次
  • 性别: 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数据库事务日志

    ibm db2数据库事务日志已满的完全解决方法

    db2数据库安装包、db2数据库安装驱动

    db2数据库安装包 db2数据库链接服务器驱动 db2数据库安装方法

    DB2数据库性能调整和优化 牛新庄 PDF

    深刻理解DB2的锁及并发机制、索引原理、数据库参数、优化器原理、SQL语句调优等内部机理才能针对性地快速提出解决问题的方法;快照、db2pd、db2expln及事件监控器等则是必须熟练掌握的工具。《DB2数据库性能调整和...

    db2数据库培训文档

    db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训文档db2数据库培训...

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

    由于使用了LOGRETAIN=ON数据库配置,所以数据库日志文件将不会被数据库从活动日志目录中自动删除或循环利用,活动日志目录中的日志文件将会越来越多,所以需要对该目录下的日志文件进行归档。

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

    管理数据库日志的工作可以手工完成,也可由编写USEREXIT程序自动维护。由于DB2对所有平台都提供了相应的USEREXIT示例程序,而且非常易于修改和使用,所以IBM建议用户使用USEREXIT程序来管理日志文件。本文介绍了使用...

    JDBC连接DB2数据库需要的jar包

    JDBC连接DB2数据库需要的jar包 JDBC连接DB2数据库需要的jar包 JDBC连接DB2数据库需要的jar包

    db2数据库错误解决代码sqlcode

    db2数据库错误解决代码sqlcode db2数据库错误解决代码sqlcode

    DB2数据库用户手册

    DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册DB2数据库用户手册

    远程连接db2数据库

    远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库

    Linux系统重启db2数据库命令实例详解.docx

    首先查看是否有活跃的数据库 命令:db2 list active databases 如果没有,需要对目标数据库进行激活设置 命令:db2 activate database db_name 然后再次使用上一条命令,就可查看到当前已有活跃的数据库了,此时可...

    Db2数据库操作的常用命令列表

    Db2数据库操作的常用命令列表, Db2数据库操作的常用命令列表

    DB2数据库实践基础教程

    资源名称:DB2数据库实践基础教程 内容简介:《DB2数据库实践基础教程》是《数据库原理与DB2应用教程》(杨鑫华、丁传华、赵慧敏编著,北京,清华大学出版社,2007年)的配套教材,着重于对实践操作的介绍,包括DB2...

    db2数据库性能优化小技巧

    db2数据库性能优化小技巧

    DB2数据库数据类型

    DB2数据库数据类型DB2数据库数据类型DB2数据库数据类型

    db2通用数据库自学教程

    db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用数据库自学教程db2通用...

    DB2数据库开归档日志功能.doc

    db2数据库开归档日志

    DB2数据库实战手册(Part 3)

    2、《DB2数据库实战手册》顾名思义是一本以实战教程为主的书籍,内容涵盖了16期DB2入门开窍版和专家坐诊版块中绝大多数典型问题; 3、《DB2数据库实战手册》除了实战内容以外,还包括了DB2的发展历史,DB2的体系结构...

    DB2数据库管理软件 - db2mon v1.0

    管理项目包括数据库事务负载、IO负载、容量、IO性能、锁、排序、应用、内存使用、数据库日志空间等。监控管理方式包括即时查看和历史查看两种,既可以实时了DB2解数据库当前的状态信息,也可以回溯DB2数据库过去一段...

    DB2数据库与SQLServer数据库的异同.doc

    DB2数据库与SQLServer数据库的异同 DB2、Oracle、SQLServer数据库可以说是数据库领域的三座大山。这三座大山各有各的 特色。为此企业在选型的时候往往会在这三个数据库之间犹豫,不知道该选哪个数据库 好。笔者这里...

Global site tag (gtag.js) - Google Analytics