|
级别: 初级 Dirk deRoos, DB2 信息开发部, IBM 多伦多实验室 2003 年 5 月 01 日 DB2 UDB V8.1 的特点是能够使用 SQL 表函数捕获数据库系统监控数据的快照。本文概述了这样的能力并详述了如何实现这种监控技术。 监控 IBM® DB2® Universal Database(UDB)实例的状态的一种方法是通过捕获数据库系统监视器数据的 快照。监控数据的快照描述了在拍摄快照这个特定时间点上数据库的活动状态。在评估数据库系统性能以及检测潜在问题方面,这种数据库系统监控方法特别有用。 DB2 UDB V8.1 for UNIX®、Linux 和 Windows® 的特点是能够使用 SQL 表函数捕获快照。这代表了一种明显的改进,从而可以轻松地捕获并存储快照,以便快速且灵活地进行检索。
可用的快照监视器 SQL 表函数(称为 快照表函数)有很多,其中的每一个表函数都捕获一种特定类型的监视器数据。 表 1列出了更常用的快照表函数。 注:有关各个快照表函数的详细信息(例如返回的列及其数据类型),请参阅与该快照表函数名称相链接的 DB2 文档主题。另外,有关完整的列表,请参阅 DB2 文档主题 快照监视器 SQL 表函数。
所有的快照表函数都返回一张监视器数据表,其中的每一行代表一个正被监控的数据库对象实例,而每一列代表一个监视器元素。监视器元素代表数据库系统状态的特定属性。 下面的 DB2 文档主题中列出了可用于快照监控的所有监视器元素: 快照监视器逻辑数据组和监视器元素。快照表函数的列名称直接对应于该主题中列出的监视器元素名称。
快照表函数能够捕获的许多监视器元素都受控于监视器开关。如果快照表函数表中的某些函数描述中提到特定监视器开关,则表明受控于该开关。DB2 包含监视器开关以向 DBA 提供禁止收集监视器元素集的选项,从而优化数据库性能。还有大量监视器元素不受开关的控制。 表 2列出了所有的监视器开关及其数据库管理器级别和数据库级别标识。
在数据库管理器级别,监视器开关设置在 dft_monswitches数据库管理器配置参数中。要查看所有的监视器开关设置的设置选项,请使用 GET DATABASE MANAGER MONITOR SWITCHES 命令。要启用或禁用数据库管理器级别的监视器开关设置,请使用 UPDATE DBM CFG 命令,并指定要更改的个别监视器开关。例如,以下命令关闭 DFT_MON_TIMESTAMP 监视器开关,来终止时间戳记监视器数据的收集:
每个连接至数据库的应用程序都有其自己的监视器开关集,这些监视器开关与数据库管理器和其它应用程序无关。应用程序在连接至数据库时,从数据库管理器上继承它们的监视器开关设置。要查看应用程序的所有监视器开关设置的设置选项,请使用 GET MONITOR SWITCHES 命令。您可以使用 UPDATE MONITOR SWITCHES 命令来更改应用程序的监视器开关设置。例如,下面的命令打开 LOCK 监视器开关,从而启用 SNAPSHOT_LOCK 快照表函数所使用的监视器元素的收集:
使用快照表函数访问监视器数据的方法有两种: 直接访问和 文件访问。 对快照数据进行直接访问时,已授权用户用快照表函数发出查询,并接收包含监视器数据的结果集。已授权用户(要执行快照监控任务)意味着必须拥有 SYSADM、SYSCTRL 或 SYSMAINT 权限。 通过文件访问,已授权用户可以使所有用户都可以使用特定的快照数据集合。要这样做,已授权用户调用 SNAPSHOT_FILEW 存储过程,来确定快照请求类型和受影响的分区和数据库。SNAPSHOT_FILEW 存储过程将监视器数据保存到数据库服务器上的文件中。随后任何数据库用户都可以使用对应的快照表函数(使用指出文件访问的参数)来发出查询。从 SNAPSHOT_FILEW 存储过程生成的文件中抽取出他们接收的监视器数据。因此,用户将只接收快照表函数的结果,已授权用户已对这些快照表函数使用了 SNAPSHOT_FILEW 存储过程。 要使用快照表函数捕获直接访问的快照,请完成以下步骤:
以下示例将演示前面给出的各个步骤。在这个方案中,已有三个应用程序连接至 Sample 数据库。两个是本地连接,另一个连接自远程客户机。一个本地应用程序已经对 Sample 数据库的 STAFF 表中的记录作了一些更新。同时,远程应用程序已经在 Sample 数据库的 SALES 表中插入了一条记录。第二个本地应用程序用于执行快照监控活动。 以下是这三个应用程序执行的命令和语句的顺序: 监控应用程序:
应用程序 1(远程应用程序):
应用程序 2(本地应用程序):
监控应用程序:
上面查询的结果集中包含许多列,因此从命令行读取会很困难。如果您只对几个特定监视器元素感兴趣,那么可以将 select 语句限制在相关的监视器元素列。例如,以下是这样一个查询及其对应的结果集: 监控应用程序:
存储定期捕获的监视器快照结果可以提供大量有用信息,从而确定 DBMS 的状态和行为趋势。这样做的一个简单方式是对您正监控的实例数据库中的监视器数据创建一个(或多个)表。例如,下面这个正在创建的表将要存储有关连接至实例中数据库的应用程序数的监视器数据。 监控应用程序:
以下语句捕获实例中各个数据库的连接数的快照,以及时间戳记,并将这个数据插入到上面创建的 INSTANCE_SNAP 表中。 监控应用程序:
上面的输出指出有两个本地应用程序和一个远程应用程序连接到了数据库 Sample 上。 通过文件访问使用快照表函数提供了一种使所有用户都可以访问快照监视器数据的安全方式。这种方法有一些局限性:
在调用 SNAPSHOT_FILEW 存储过程时,除了确定要监控的数据库和分区以外,您需要指定 快照请求类型号。其中的每个类型号代表一个或多个快照表函数可以访问的快照监视器信息集。 表 3列出了快照表函数及其对应的快照请求类型号。
要使用 SNAPSHOT_FILEW 存储过程捕获快照并存至文件,请完成以下步骤:
要使用快照表函数从 SNAPSHOT_FILEW 文件访问快照数据,请完成以下步骤:
有了快照表函数,您可以使用 SQL 轻松地捕获数据库系统监视器数据的快照。将所选监视器数据集存储到 SQL 表中的这种能力允许存在许多监控应用程序。以下列表给出了一些示例:
只要使用 SQL 和 DB2 任务中心就可以轻松实现上述每一项。您自己可以试一下,以增长数据库方面的知识,并提高您管理和调优的能力以获得最佳性能。 |
