Albert Grankin, 高级软件工程师, IBM
随着自治技术的应用日益增加,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 ] [-r ] Options: -h Print help message -a Archive diagnostic data -r Remove diagnostic archives that are > then old. Can be combined with -a -o |
下面详细介绍不同的选项。
如果没有在命令行上指定目标目录,脚本使用 DIAGPATH/db2dump_archive 目录作为默认的目标。如果此目录不存在,脚本会创建它。
可以创建一个 DIAGPATH/db2dump_archive 链接,让它指向另一个有足够空间的本地或 NFS 挂载文件系统。在有多个物理分区的 DPF 设置中,如果物理分区不共享诊断路径目录,那么必须在每个物理分区上创建此链接。
使用 –a (archive) 命令行选项存档来自 DIAGPATH 的诊断数据:
db2dback.ksh -a [-o ] |
在默认情况下,在 DPF 系统上脚本尝试使用 rah 命令在每个物理分区上运行本身的本地版本。如果所有物理分区共享 DIAGPATH(BCU 不建议这么做),可以使用 –l 子选项调用脚本的本地版本。
脚本把 db2diag.log 和管理日志文件重命名为 db2diag.log. 和 .log.,然后为实例创建新的日志文件。然后,脚本使用 UNIX mv 命令转移 DIAGPATH 中的所有文件和目录,但是以下文件和目录除外:
- 刚创建的 db2diag.log 和管理通知日志文件。
- stmmlog 目录中的自调优内存管理程序 (STMM) 日志文件。STMM 自动地管理它的日志文件使用的空间,通常不会让空间总量超过 50MB。
- 在 15 分钟以内创建的任何诊断数据文件或首次发生数据捕捉 (FODC) 目录。这是为了确保在诊断数据转储期间启动存档的情况下,文件不会分配到不同的存档或目标中。
从 DIAGPATH 转移到新目标的所有文件保留原有的目录层次结构。所有文件转移到采用以下命名约定的子目录中:
db2dback..YYYY-MM-DD-hhmmss |
使用 –t 命令行选项为目标目录中的所有诊断数据文件创建 tar 存档:
db2dback.ksh -a -t [-o ] |
从源目录中删除已经复制到 tar 存档中的文件。上面的文件例外规则也适用于 tar 存档。tar 文件采用以下命名约定:
db2dback..YYYY-MM-DD-hhmmss.tar |
使用 –z 命令行子选项压缩目标目录中的文件。在默认情况下,脚本使用 gzip 工具压缩文件。如果脚本在系统上找不到 gzip 命令,它会尝试使用 compress 实用程序。可以与 –t 子选项同时使用此选项,也可以单独使用:
db2dback.ksh -a –z [-o ] db2dback.ksh -a -t –z [-o ] |
在把数据发送给 tar 存档时,工具在最后压缩存档。如果要转移数据(没有 –t 选项),那么在目标目录中分别压缩转移的每个文件。只压缩超过 200KB 的文件。
在默认情况下,DPF 系统上的诊断数据存档是连续的,这意味着工具每次存档一个物理分区的数据。使用 –p 子选项对所有物理分区同时执行存档。这会在脚本中的 DB2 rah 命令中插入 ||& 前缀。关于使用 rah 命令的更多信息,请参见 DB2 Information Center。
用 -r 命令行选项执行脚本,可以执行基本的诊断数据存档维护。可以与 –a 存档选项同时使用此选项,也可以单独使用。不带 –a 选项的命令格式如下:
db2dback.ksh -r |
在使用此选项时,必须通过参数指定文件在存档中保留的天数。
在与 –a 存档选项同时使用 -r 选项时,工具先存档诊断数据,然后尝试删除旧文件。带 –a 选项的命令格式如下:
db2dback.ksh -a -r 180 |
天数参数可以指定为 0(零),表示希望删除除了 db2dback.ksh 实用程序日志文件之外的所有存档文件。
db2dback.ksh 脚本把消息写入自己的日志文件。这些消息报告进度并记录所有错误。脚本为每个物理分区创建单独的日志文件。日志文件的命名约定使用机器的主机名,如下所示:
db2dback..log |
脚本在存档目标目录中创建日志文件。文件只包含最近一次调用脚本的相关信息,这确保文件本身不会增长得太大。下面是日志文件的示例:
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 |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15082138/viewspace-608832/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15082138/viewspace-608832/