级别: 中级 Albert Grankin, 高级软件工程师, IBM
2009 年 6 月 29 日 是否希望以更好的方法管理 IBM® DB2® for Linux® or AIX® 服务器上的诊断文件?如果是这样,本文会对您有帮助。这里提供一个脚本,它可以帮助您存档和维护这些文件。通过压缩和删除旧的文件,可以进一步简化管理过程。
简介
随着自治技术的应用日益增加,DB2 服务器可能会产生很大的消息日志文件、管理通知日志文件和事件日志文件。在具有许多逻辑和物理分区的大型数据仓库环境中,这种情况尤其显著。另外,在出现问题时,为了满足首次故障数据捕捉的需要,DB2 往往会产生大量诊断数据。
日志记录活动的增加还会增加占用的文件系统空间,导致可管理性问题。简单地删除日志文件是不可行的,因为 DB2 支持人员常常要求用户提供历史诊断数据,尤其是在研究当前问题期间和迁移实例之后。
本文介绍一个新脚本,可以使用它对 DB2 实例的诊断日志和数据执行维护任务。这个脚本称为 db2dback.ksh,可以通过后面 下载 部分中的 zip 文件获得它。这个脚本可以在单一分区和多分区环境中运行,它会考虑不同的用户设置,不同的物理分区可以使用共享的或单独的诊断数据路径。
脚本概述
db2dback.ksh shell 脚本可以对来自 DB2 实例配置的诊断数据路径 (DIAGPATH) 的诊断数据进行存档。还可以对目标(存档)目录中已经存档的数据进行维护。
DB2 实例的所有者应该定期运行此脚本。可以手工运行此脚本,也可以通过调度工具(例如,cron 作业)运行。
此脚本当前可以处理 AIX 和 Linux 操作系统上的 DB2 实例。在这两种环境中,它可以处理单分区实例或用 Data Partitioning Feature (DPF) 创建的多分区实例,还包括 Balanced Warehouse 设置。在 DPF 环境中,此脚本支持不同的实例配置:
- 在所有分区之间共享单一
DIAGPATH
- 每个物理分区使用单独的
DIAGPATH
注意:DIAGPATH 是一个 DB2 数据库管理程序配置参数值。如果在实例配置中没有设置这个参数,那么使用 DB2 实例所有者的默认值 $HOME/sqllib/db2dump。关于数据库管理程序配置参数的更多信息,请参见 DB2 Information Center。
安装脚本
DB2 实例所有者可以按以下步骤安装此脚本:
- 从下面的 下载 部分获取 db2dback.zip 文件。
- 从 zip 文件中提取出 db2dback.ksh 脚本。
- 把 db2dback.ksh 复制到 DB2 实例的 sqllib/bin 目录中。
必须有在 DPF 设置上远程执行脚本所需的执行权限。
下面的命令示例设置正确的执行权限:
cp db2dback.ksh ~/sqllib/bin
chmod 755 ~/sqllib/bin/db2dback.ksh
|
获得脚本帮助
可以用 –h 命令行选项运行 db2dback.ksh 脚本,显示脚本选项的帮助:
$ db2dback.ksh -h
04-01-2009 13:13:25: DIAGPATH is set to /home3/agrankin/sqllib/db2dump
Usage: db2dback.ksh [-ahzvptl] [-o <path> ] [-r <days> ]
Options:
-h Print help message
-a Archive diagnostic data
-r <days> Remove diagnostic archives that are >
then <days> old. Can be combined with -a
-o <dir> Specify output directory
-z Compress diagnostic data tar archive
-v Verbose output.
-p Run diag data archiving in parallel
(default is sequential).
-l Local execution. This is used in cases
when db2dump is shared by all partitions.
It also can be used if archive runs on
just single physical partition.
-t Suboption for -a, archives data to a
tar archive at destination.
|
下面详细介绍不同的选项。
指定目标(存档)目录
如果没有在命令行上指定目标目录,脚本使用 DIAGPATH/db2dump_archive 目录作为默认的目标。如果此目录不存在,脚本会创建它。
可以创建一个 DIAGPATH/db2dump_archive 链接,让它指向另一个有足够空间的本地或 NFS 挂载文件系统。在有多个物理分区的 DPF 设置中,如果物理分区不共享诊断路径目录,那么必须在每个物理分区上创建此链接。
存档
使用 –a (archive) 命令行选项存档来自 DIAGPATH 的诊断数据:
db2dback.ksh -a [-o <destination_path> ]
|
在默认情况下,在 DPF 系统上脚本尝试使用 rah 命令在每个物理分区上运行本身的本地版本。如果所有物理分区共享 DIAGPATH(BCU 不建议这么做),可以使用 –l 子选项调用脚本的本地版本。
脚本把 db2diag.log 和管理日志文件重命名为 db2diag.log.<timestamp> 和 <instancename>.log.<timestamp>,然后为实例创建新的日志文件。然后,脚本使用 UNIX mv 命令转移 DIAGPATH 中的所有文件和目录,但是以下文件和目录除外:
- 刚创建的 db2diag.log 和管理通知日志文件。
- stmmlog 目录中的自调优内存管理程序 (STMM) 日志文件。STMM 自动地管理它的日志文件使用的空间,通常不会让空间总量超过 50MB。
- 在 15 分钟以内创建的任何诊断数据文件或首次发生数据捕捉 (FODC) 目录。这是为了确保在诊断数据转储期间启动存档的情况下,文件不会分配到不同的存档或目标中。
从 DIAGPATH 转移到新目标的所有文件保留原有的目录层次结构。所有文件转移到采用以下命名约定的子目录中:
db2dback.<hostname>.YYYY-MM-DD-hhmmss |
使用 –t 命令行选项为目标目录中的所有诊断数据文件创建 tar 存档:
db2dback.ksh -a -t [-o <destination_path> ] |
从源目录中删除已经复制到 tar 存档中的文件。上面的文件例外规则也适用于 tar 存档。tar 文件采用以下命名约定:
db2dback.<hostname>.YYYY-MM-DD-hhmmss.tar
|
使用 –z 命令行子选项压缩目标目录中的文件。在默认情况下,脚本使用 gzip 工具压缩文件。如果脚本在系统上找不到 gzip 命令,它会尝试使用 compress 实用程序。可以与 –t 子选项同时使用此选项,也可以单独使用:
db2dback.ksh -a –z [-o <destination_path> ]
db2dback.ksh -a -t –z [-o <destination_path> ]
|
在把数据发送给 tar 存档时,工具在最后压缩存档。如果要转移数据(没有 –t 选项),那么在目标目录中分别压缩转移的每个文件。只压缩超过 200KB 的文件。
在默认情况下,DPF 系统上的诊断数据存档是连续的,这意味着工具每次存档一个物理分区的数据。使用 –p 子选项对所有物理分区同时执行存档。这会在脚本中的 DB2 rah 命令中插入 ||& 前缀。关于使用 rah 命令的更多信息,请参见 DB2 Information Center。
维护存档的诊断数据
用 -r 命令行选项执行脚本,可以执行基本的诊断数据存档维护。可以与 –a 存档选项同时使用此选项,也可以单独使用。不带 –a 选项的命令格式如下:
db2dback.ksh -r <number_of_days>
|
在使用此选项时,必须通过参数指定文件在存档中保留的天数。
在与 –a 存档选项同时使用 -r 选项时,工具先存档诊断数据,然后尝试删除旧文件。带 –a 选项的命令格式如下:
天数参数可以指定为 0(零),表示希望删除除了 db2dback.ksh 实用程序日志文件之外的所有存档文件。
脚本日志文件
db2dback.ksh 脚本把消息写入自己的日志文件。这些消息报告进度并记录所有错误。脚本为每个物理分区创建单独的日志文件。日志文件的命名约定使用机器的主机名,如下所示:
脚本在存档目标目录中创建日志文件。文件只包含最近一次调用脚本的相关信息,这确保文件本身不会增长得太大。下面是日志文件的示例:
db2dback.ksh
02-05-2009 19:00:38: Option -r specified
02-05-2009 19:00:38: Removing all archives older than 0 days
02-05-2009 19:00:38: Removing archive db2dback.p6db2serv.2009-02-05-190017
|
结束语
使用这个脚本可以轻松地管理 AIX 或 Linux 上的 DB2 的诊断日志。试一下,您会体验到管理诊断数据是多么容易。
下载 | 描述 | 名字 | 大小 | 下载方法 |
|---|
| db2back 脚本 | db2back.zip | 5KB | HTTP |
|---|
参考资料 学习
获得产品和技术
讨论
关于作者  | |  | Albert Grankin 是 DB2 for Linux, UNIX, and Windows Advanced Problem Determination Team 的资深成员。Albert 有超过 12 年数据库行业从业经验,在数据库性能调优、故障排除、深入问题诊断和调试方面经验丰富。Albert 还具有丰富的开发经验,主要为 DB2 产品系列开发诊断和故障排除工具。Albert 曾经在许多场合会见客户,包括为不同地区的客户提供现场技术咨询和出席客户活动。 |
对本文的评价
|