简介: 轮换诊断日志和管理通知日志是 DB2 9.7 引入的新特性之一。它使得客户能够控制诊断日志和管理通知日志使用的最大空间,避免这些日志文件所在的文件系统出现磁盘空间满的情况。这种新的日志增长方式减轻了 DBA 日常工作,也提高了 DB2 客户支持人员的工作速度。
DB2 有两种类型的日志文件用于故障诊断。管理通知日志 (instance_name.nfy) 主要供数据库和系统管理员进行故障诊断,它只用于 Linux 和 Unix 操作系统。DB2 诊断日志文件 (db2diag.log) 主要供 IBM 软件支持机构进行故障诊断。管理通知日志消息也以标准化消息格式记录到 db2diag 日志文件。
在 IBM DB2 9.7 之前的版本,这两个日志文件的大小被允许无限制地增长。有时候这些文件由于一直没有归档,而导致其所在文件系统的磁盘空间溢出。这会造成 DB2 不能正常记录诊断信息,其他应用程序也可能因为磁盘空间满而运行失败。更为糟糕的是,如果这些日志和 DB2 其他关键数据保存在同一文件系统上,DB2 本身会不能正常工作,带来不必要的损失。
此外,如果 db2diag.log 一直没有被删除,它会包含数年来数据库操作的大量诊断信息。当客户系统发生错误需要 DB2 支持服务时,该诊断日志文件会通过 ftp 发往 IBM,这将花费客户很长的时间并延缓了支持人员对该服务消息的响应时间。这对于 24 × 7 运行的生产系统是完全不能容忍的。
上述两大问题一直是客户和服务支持人员的痛处。DB2 9.7 引入的新特性 - 轮换诊断日志和管理通知日志可以控制所有轮换日志的总大小,从而解决这些问题,减轻 DBA 的日常工作。
诊断日志文件和管理通知日志文件存在的形式相似,这里以诊断日志文件为例说明其存在的形式。DB2 的诊断日志文件有两种不同的形式:
一个活动诊断日志文件,名为 db2diag.log,其大小可以无限增大。DB2 9.7 之前都采用这个形式,这也是 DB2 9.7 的默认行为。每当 diagsize 数据库管理器配置参数的值为缺省值 0 时,都采用单一诊断日志记录行为。
单一活动日志文件(名为 db2diag.N.log,其中 N是从 0 开始持续增大的文件名数字索引)。在 diagpath 配置参数定义的位置可以找到一系列诊断日志文件。每个文件都将增长到有限的大小,达到该限制值时,系统将关闭该日志文件,然后创建并打开一个新的日志文件进行日志记录,新日志文件将具有增大后的文件名索引(db2diag.N+1.log)。每当 diagsize 数据库管理器配置参数设为非零值时,都采用轮换日志记录行为。
你可以通过设置 DIAGSIZE数据库管理器配置参数来选择采用上述哪种日志文件形式。
更新数据库管理器配置参数 DIAGSIZE 为非 0 值,DB2 重新启动时切换到轮换日志记录行为,使用命令如下:
db2 update dbm cfg using DIASIZE 1024 |
DIAGSIZE 的单位是兆字节,缺省值为 0,最小值为 2,最大值不能超过磁盘的可用空间,否则会报 SQL5130N 的错误消息。
当启动轮换日志记录行为后,其表现如下:
除此之外,DIAGSIZE 配置参数将控制所有轮换诊断日志文件和轮换管理通知文件的总大小:
轮换日志文件从来不会充满 diagpath 所定义的目录,这是因为 DB2 的“Early Totaling”机制。当创建一个新的日志文件时,DB2 会检查可用的磁盘空间。当没有足够的磁盘空间创建新日志文件并且至少存在两个轮换日志文件时,DB2 会删除最老的日志文件,即使轮换日志文件数目未达到 10,这样 DB2 就会得到些许空间创建新的日志文件。
这里是启用轮换日志的一个例子,默认情况下 DIAGSIZE 为 0,我们在其 DIAGPATH 定义的路径目录 db2dump 内只看到一个 db2diag.log 和 db2hia.nfy(db2 实例名为 db2hia)。
sapsu2:db2hia 4% ls -lrt total 22168 -rw-r----- 1 db2hia dbhiaadm 6291312 Oct 20 00:24 db2eventlog.000 -rw-rw-rw- 1 db2hia dbhiaadm 2967 Oct 20 00:24 db2hia.nfy drwxrwxrwx 2 db2hia dbhiaadm 4096 Oct 25 13:47 events drwxrwxr-t 2 db2hia dbhiaadm 4096 Oct 27 17:40 stmmlog -rw-rw-rw- 1 db2hia dbhiaadm 5036089 Oct 27 17:40 db2diag.log |
然后,我们发出如下命令
sapsu2:db2hia 5% db2 update dbm cfg using DIAGSIZE 2 DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed successfully. |
重启 DB2 实例后,在 db2dump 目录中新生成了两个文件,db2diag.0.log 和 db2hia.0.nfy。
sapsu2:db2hia 9% ls -lrt total 30392 drwxrwxrwx 2 db2hia dbhiaadm 4096 Oct 25 13:47 events drwxrwxr-t 2 db2hia dbhiaadm 4096 Oct 27 17:40 stmmlog -rw-r----- 1 db2hia dbhiaadm 6291312 Oct 29 02:47 db2eventlog.000 -rw-rw-rw- 1 db2hia dbhiaadm 3148 Oct 29 02:47 db2hia.nfy -rw-rw-rw- 1 db2hia dbhiaadm 5043787 Oct 29 02:47 db2diag.log -rw-rw-rw- 1 db2hia dbhiaadm 12190 Oct 29 02:47 db2diag.0.log -rw-rw-rw- 1 db2hia dbhiaadm 863 Oct 29 02:47 db2hia.0.nfy |
过一段时间后,DB2 会陆续关闭旧的诊断日志文件,创建新的诊断日志文件。
sapsu2:hiaadm 4% ls -lrt total 25472 drwxrwxrwx 2 db2hia dbhiaadm 4096 Oct 25 13:47 events drwxrwxr-t 2 db2hia dbhiaadm 4096 Oct 27 17:40 stmmlog -rw-rw-rw- 1 db2hia dbhiaadm 3148 Oct 29 02:47 db2hia.nfy -rw-rw-rw- 1 db2hia dbhiaadm 5043787 Oct 29 02:47 db2diag.log -rw-r----- 1 db2hia dbhiaadm 6291312 Oct 29 03:38 db2eventlog.000 -rw-rw-rw- 1 db2hia dbhiaadm 2775 Oct 29 03:39 db2hia.0.nfy -rw-rw-rw- 1 db2hia dbhiaadm 172957 Oct 29 03:47 db2diag.6.log -rw-rw-rw- 1 db2hia dbhiaadm 172957 Oct 29 03:47 db2diag.7.log -rw-rw-rw- 1 db2hia dbhiaadm 172957 Oct 29 03:47 db2diag.8.log -rw-rw-rw- 1 db2hia dbhiaadm 172957 Oct 29 03:47 db2diag.9.log -rw-rw-rw- 1 db2hia dbhiaadm 172957 Oct 29 03:47 db2diag.10.log -rw-rw-rw- 1 db2hia dbhiaadm 172957 Oct 29 03:47 db2diag.11.log -rw-rw-rw- 1 db2hia dbhiaadm 172383 Oct 29 03:52 db2diag.12.log -rw-rw-rw- 1 db2hia dbhiaadm 172362 Oct 29 04:00 db2diag.13.log -rw-rw-rw- 1 db2hia dbhiaadm 172391 Oct 29 04:00 db2diag.14.log -rw-rw-rw- 1 db2hia dbhiaadm 85909 Oct 29 04:19 db2diag.15.log |
如果要回到采用老的日志记录方式,将 DIAGSIZE 设置为 0 并重启 DB2 实例。在我们的例子中:
sapsu2:db2hia 5% db2 update dbm cfg using DIAGSIZE 0 DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed successfully. |
DB2 工具 db2diag、table UDF PD_GET_DIAG_HIST 和 db2support 都支持轮换日志。
DB2 9.7 在文档中推荐将 DIAGSIZE 设置为大于 50MB 的数值,但不超过 DIAGPATH 所指定目录中可用空间的 80%。但在实际生产系统中,个人建议通过观察每周 db2diag.log 的增长速度决定 DIAGSIZE 的数值。例如据一般性统计,SAP 客户系统的 db2diag.log 每星期增长 2 到 4MB,为避免诊断信息丢失,推荐将 DIAGSIZE 设为 1024MB(1GB)。这允许 DB2 创建至多 10 个 10MB 的管理通知日志文件和至多 10 个 90MB 的诊断日志文件,这将能涵盖处于高压力下数据库产生很多的警告 / 错误信息的情况。
本文主要介绍了 DB2 9.7 轮换日志特性。希望通过本文读者能够了解这种新的日志记录形式所带来的好处,DB2 轮换日志的工作原理和使用方式,以及在实际生产系统中的最佳实践。关于本文中提高的配置参数可搜索 IBM DB2 9.7 Information Center for Linux, UNIX and Windows获得更多相关信息。
学习
获得产品和技术
讨论
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论