`
weiruan85
  • 浏览: 383997 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

DB2 日常维护技巧,第 1 部分

    博客分类:
  • db2
阅读更多
级别: 初级

程永 (cyong@cn.ibm.com), 高级信息工程师, IBM
王雪梅 (xuemay_2000@163.com), 高级数据库工程师, 自由撰稿人


2008 年 11 月 27 日

本文主要介绍数据库管理员(DBA)在日常维护中遇上一些比较紧急的情况如何处理,如何形成自己的应急方案,以及在日常维护中需要注意哪些技巧。“ DB2 日常维护技巧,第 1 部分”主要包括删除活动日志文件后如何处理、数据库事务日志已满如何处理、没有正确设置数据库代码页如何处理等。
删除活动日志文件后如何处理

1、恢复日志文件

数据库的日志文件主要是用来保存数据库更改的记录。数据库的日志管理方式有两种:循环日志模式和归档日志模式。循环日志模式是缺省模式(logarchmeth1 和 l ogarchmeth2 数据库配置参数被设置成 OFF),在这种方式下,有几个限制,分别为:

只能脱机数据库备份,不能联机数据库备份。
不能进行增量备份,也不能进行差异备份。
不能进行表空间级别备份,只支持数据库级别备份。
不能进行前滚恢复
在循环日志模式下,日志文件会被循环使用。日志仅保留到当前事务完成时为止。正常情况下,数据库仅使用主日志文件(由 LOGPRIMARY 数据库参数控制)来记录数据库的更改,只有当主日志文件使用完的情况(事务都在进行中,没法释放出新的资源给新的事务使用)下,才会按需新开辅助日志文件,当新开的辅助日志文件使用完成后,就会关闭掉。主日志文件在第一次 ACTIVATE DATABASE 命令运行后或第一次数据库连接后在内存中分配。辅助日志文件只有当主日志文件满时才会新开。循环日志模式具体如图 1 所示:


图 1. 循环日志模式


崩溃恢复期间,使用活动日志来防止故障(系统电源或应用程序错误)使数据库处于不一致的状态。活动日志位于数据库日志路径目录中。

在归档日志模式下,就没有上面循环日志模式下的限制,可以进行脱机数据库备份,也可以进行联机数据库备份,可以进行表空间备份,可以前滚恢复数据库,可以进行增量备份、差异备份等。已经归档的日志记录是用来前滚恢复的,而崩溃恢复则不需要使用这些已经归档的日志记录。在归档日志模式下,平时数据库也仅使用主日志文件(由 LOGPRIMARY 数据库参数控制)来记录数据库的更改,只有当主日志文件使用完的情况(事务都在进行中,没法释放出新的资源给新的事务使用)下,才会按需新开辅助日志文件,当新开的辅助日志文件使用完成后,就会关闭掉。主日志文件在第一次 ACTIVATE DATABASE 命令运行后或第一次数据库连接后在内存中分配,并且当某一个主日志文件使用完毕后(这个日志中所有的事务都已经处理完毕,一个事务可以跨多个日志文件),其是通过改名的方式把日志文件由在线活动日志变成脱机活动日志,而内存中已经打开的主日志文件并不关闭而是改成新的日志文件名。在归档日志模式下,活动日志不再是循环使用,而是用完的日志文件将变成脱机方式,并且由数据库管理器进行归档。归档日志模式具体如图 2 所示:


图 2. 归档日志模式


2、如何处理

DB2 的活动日志文件(指的是数据库参数 Log Path 目录中存储的日志文件)不能被删除。一旦 DB2 的活动日志文件被删除,或者所在的存储设备出现问题,则不可避免地造成 DB2 数据库系统宕机。日志文件路径由数据库配置参数 Log Path 控制。如果要修改,使用数据库配置参数 NEWLOGPATH 。

如果删除了 DB2 数据库的活动日志文件,则不可避免地造成 DB2 数据库系统宕机。如果你有现有 DB2 数据库的备份,建议由备份恢复数据库。请在执行恢复之前,确认:

数据库备份可用
数据库备份如果是 Online 的,则相关的日志文件要存在
如果可能,先保存当前的错误环境;或者将当前的环境进行文件系统的备份
如果没有数据库备份,但是你使用了 DB2 到 DB2 的复制功能,把当前数据库准实时复制到了另外一个数据库,可以从另外一个数据库把数据倒回来。

如果既没有数据库备份也没有使用 DB2 的复制功能建立备份库,而这个时候你有 PPA 服务,请找 IBM 800 的工程师提请实验室重置日志控制文件,然后重建数据库,具体如下:

致电 8008101818 - 5200,提供 ICN(IBM Customer Number) 或 PPA Number ,对于生产系统宕机,PPA 是提供 24 × 7 服务。
停止实例。
准备 db2level 输出和日志控制文件 SQLOGCTL.LFH 文件(DPF 下每个实例都要提供)。
将重置过的日志控制文件放回原处(注意 FTP 时选择正确的方式 BIN) 。
启动数据库,连接数据库,确认重置的控制文件可用(DPF 相关操作更复杂)。
停止实例,确保实例是由 db2stop 非 db2stop force 停止的。
用 db2dart 工具检查数据库对象的完整性,db2dart 检查没有问题并不代表数据库对象一定是一致的。
重建数据库。
使用这种方式重建数据库,仍会有数据丢失,这点需要注意。数据库的重建时间视数据库大小而定,需要有 2 倍于数据库实际大小的存储空间导数据。如果没有 PPA 服务,则只能使用 db2dart 命令导出裸数据,重建数据库,而数据库里的 LOB 字段,将全部舍弃无法恢复。






回页首




交易日志存储空间满如何处理

在归档日志模式下,如果没有使用自动归档方式或者自动归档配置出现故障(比如磁带机出现故障,存储管理软件出现故障等等),则存储的日志文件会不断增多,有可能造成日志所在的文件系统空间满。 当这种情况发生时,会根据参数 BLK_LOG_DSK_FUL 的配置而有不同的现象:

如果该参数启用,则 DB2 数据库可继续读操作,但是写操作会挂起。
如果该参数没有启用,则 DB2 数据库会停止工作。
两种情况下,都需要到日志所在的文件系统添加了空间后整个数据库才会恢复正常。

BLK_LOG_DSK_FUL 数据配置参数主要就是为了防止当活动日志所在的当前目录满了(不能继续创建新的日志文件)时 DB2 马上停止工作。如果启用了此参数(如上面所述的情况 1),也就是将 BLK_LOG_DSK_FUL 数据配置参数设置成 YES,当活动日志所在目录不能创建新的文件时,遇到日志磁盘已满错误的应用程序将挂起,从而使您可解决该错误并允许事务完成。

日志所在的文件系统空间已满以后应采取如下措施。将旧日志文件,注意不要是活动日志文件,移至另一个文件系统或扩充文件系统,建议在创建数据库之初就创建一个第三方路径用来存放归档日志文件,存储管理软件从第三方路径拿走归档日志文件,当存储管理软件出现问题时,也可以手工从第三方路径里拿走归档日志文件,不建议直接从活动日志目录中拿走文件,如果实在没有办法,比如从活动日志目录拿走文件,建议从最旧的部分在执行完 archive log 命令后挪走而不是删除。正确的处理方法是,增加活动日志目录所在文件系统的存储空间,并立即配置或修复自动归档功能。 一定要注意不要删除活动日志文件,如果删除了活动日志文件,就会使 DB2 系统宕机,具体说明可以参照本章第四节详细描述。如果管理员手工归档,需要注意 “ 首个活动日志文件即 First Active Log ”数据库配置参数在某些情况下是不准的,在归档的日志文件的时候记得要多留一些日志文件 。

当 BLK_LOG_DSK_FUL 数据配置参数设置为 NO 的时候(也就是上面说的情况 2),当活动日志所在目录不能创建新的日志文件时,接收日志磁盘已满错误的事务将会失败并回滚。






回页首




数据库事务日志已满如何处理

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

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


清单 1. 数据库事务日志的最大大小的计算公式
数据库事务日志的最大大小 = ( LOGPRIMARY + LOGSECOND )* LOGFILSIZ * 4KB


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

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

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

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

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

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

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

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

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






回页首




没有正确设置数据库代码页

由于数据库的代码页在数据库创建之后是无法修改的,所以在创建数据库时一定要选择正确的代码页。当应用程序和数据库使用的代码页不相同时,则在处理中文等情况下需要进行字符转换,因为在应用程序和数据库代码页直接映射数据需要其他开销,会使数据库性能受到影响。在某些情况下,不合适的数据库代码页会造成 JDBC、ODBC 等访问中文字段被截断(包括控制中心),这种情况需要重建数据库以修改数据库代码页。从全局规划来说,如果应用需要访问多个数据库,那么这多个数据库的代码页应该是一致的。

按照需要,设置正确的代码页。数据库代码页可以在创建数据库时指定:

CREATE DB 中可以显式指定数据库代码页。
在 DB2 V9.5 之前的版本中,CREATE DB 中未指定数据库代码页则取环境变量 db2codepage, db2country ;如果 db2codepage, db2country 没有指定,则取 Locale 。
在 DB2 V9.5 中,如果 CREATE DB 中没有指定数据库代码页,默认值将是 UTF-8 。
当你遇到这样的问题时(在创建数据库时指定了不正确的代码页),需要先将数据库中的数据导出,然后重建数据库,再将数据导入。如果有疑问,建议拨打 IBM 技术支持中心的电话:8008101818 。

分享到:
评论

相关推荐

    DB2 日常维护技巧,第 4 部分

    本文将从“DB2日常维护技巧,第4部分”中提及的几个方面,详细探讨DB2数据库的日常维护知识点。 一、更改本地系统名称 在DB2安装完成后,若需要更改本地系统名称,可以通过修改DB2SYSTEM注册表变量来实现。具体步骤...

    DB2 日常维护技巧,第 3 部分

    对于数据库管理员(DBA)来说,日常维护DB2数据库是保障系统稳定运行的基础工作。以下是DB2日常维护中的一些核心知识点: 1. 表的使用状态查询:DBA需要定期检查数据库中的表使用情况,包括表的索引创建情况。快速...

    DB2 日常维护技巧,第 2 部分

    DB2数据库管理员在日常维护中经常会遇到一些紧急情况,这些情况需要管理员具备相应的处理技巧和策略。以下将详细解析DB2日常维护技巧的几个重要方面。 1. 系统时间调整问题 在DB2数据库创建之前,如果系统时间没有...

    DB2 日常维护指南,第 2 部分

    本文将详细介绍如何检查DB2数据库的缓冲池命中率和死锁,以帮助DBA进行有效的日常维护。 首先,我们需要了解缓冲池命中率(Buffer Pool Hit Ratio)的概念。缓冲池命中率是指从缓冲池中成功获取所需数据页的百分比...

    DB2-日常维护-官方

    本资料“DB2-日常维护-官方”聚焦于DB2的日常使用与优化,旨在提供全面而深入的指导,帮助管理员更好地理解和执行DB2的系统维护工作。 首先,DB2的日常维护包括了多个方面: 1. **性能监控**:通过DB2的内置工具如...

    db2各种资源第一期

    db2 资源 DB2+V9.ppt DB2培训文档(2).ppt DB2培训文档.ppt DB2 Load 实例大全.doc db2 导入导出...-吴鑫讲解.doc DB2系统管理命令.doc Eclipse+WTP创建WSDL对象过程.doc HTTP请求报文格式.doc IBM+DB2+日常维护汇总.doc

    DB2 技巧.doc

    总之,掌握这些DB2技巧对于数据库管理员来说至关重要,它们涵盖了数据库管理的多个方面,从数据操作到性能调优,再到故障排查,都是日常维护工作的必备知识。通过深入理解和实践,可以有效提升DB2数据库的稳定性和...

    DB2 十佳性能技巧

    ### DB2 十佳性能技巧解析 #### 一、监视开关的重要性 监视开关是DB2系统中的关键组件,用于收集数据库运行时的各种性能...DBA在日常维护中应持续监控这些参数,并根据实际负载情况灵活调整,以实现最佳的性能表现。

    DB2日常维护教程

    ### DB2日常维护教程知识点概览 #### 一、数据库日常维护 在DB2数据库的日常维护工作中,有几个核心方面需要特别关注: 1. **常用命令**:掌握一...希望这些知识点能帮助您更好地理解和掌握DB2数据库的维护技巧。

    DB2学习资料(包括DB2学习文档、常用指令、优化和技巧等)

    "DB2日常维护及函数.doc"涵盖了DB2数据库的日常监控、性能调整和函数使用,对于DBA来说是必不可少的知识。"DB2编程技巧.doc"分享了一些编写高效DB2 SQL代码的策略,有助于提升查询性能。 "DB2日期和时间应用.doc...

    IBM DB2 数据库使用小技巧

    ### IBM DB2 数据库使用小技巧详解 IBM DB2 是一款功能强大的企业级数据库管理系统,广泛应用于各种商业和工业环境中。...无论是日常的数据库维护,还是复杂的系统优化,熟练掌握这些技巧都是必不可少的。

    牛新庄 db2 dba教程

    - 第 2 章、第 6 章、第 9 章:这部分内容可能会深入探讨 DB2 的内部工作机制,如数据存储结构、事务处理机制以及诊断工具的使用。 4. **通过改善锁提高应用程序并发性**:这个主题直接关乎数据库系统的并发性能,...

    db2自动生成数据库的语句

    ### DB2自动生成数据库的语句 #### 一、引言 在数据库管理与开发过程中,经常需要创建或重建数据库来满足不同的需求场景。...在日常维护工作中,熟练掌握这些技巧将极大地提高工作效率并减少不必要的错误。

    Linux和windows下查看DB2端口号

    在IT领域,数据库管理系统(DBMS)是至关重要的组成部分,而IBM的DB2作为业界领先的...掌握这些技巧,对于日常维护和故障排查工作都将大有裨益。希望本文能帮助你在不同的操作系统环境下,高效地管理DB2数据库服务。

    DB2服务器快速入门80

    根据提供的标题、描述以及部分内容,可以总结出以下与IBM DB2通用数据库产品相关的知识点: ### 一、IBM DB2简介 IBM DB2是一款由国际商业机器公司(IBM)开发的关系型数据库管理系统。它支持多种操作系统环境,如...

    IBM DB2 730官方资料pdf版

    1. **规划(1 Planning_db2-cert7301-a4.pdf)**: 这部分涵盖了DB2 730的系统规划,包括硬件和软件需求、网络架构、数据库设计策略以及性能优化的初步考虑。规划阶段对于确保数据库系统的高效运行至关重要,因为它涉及...

    DB2数据库参考资料大全

    9. **db2xpc950-setup and management.pdf**:最后,这可能是关于DB2的安装和管理的综合指南,内容可能包括安装步骤、升级过程、性能调优以及日常维护任务。 通过这些参考资料的学习,读者将能够深入理解DB2数据库...

    DB2应用经验和DB2基本问题总结

    ### DB2应用经验和DB2基本问题总结 #### DB2常用命令及操作详解 ...这些技巧不仅适用于日常运维工作,也对开发人员构建和测试数据库应用程序非常有用。希望这些内容能够帮助读者更好地理解和掌握DB2的使用方法。

    DB2 Developer's Guide

    第七部分“理想的DB2环境”探讨了创建和维护高性能DB2环境的最佳实践,包括硬件选择、软件配置和系统架构的设计。 总结来说,《DB2 Developer's Guide》是DB2开发者和管理员的必备参考书,无论你是初学者还是经验...

Global site tag (gtag.js) - Google Analytics