IBTransaction Monitor 用户指南
Dmitry Kuzmenko,2008年6月8日
IBSurgeon Transaction Monitor (IBTM) 是一个软件包,旨在监控、查看和分析 InterBase 和 Firebird 数据库中的动态事务。
目录
IBSurgeon Transaction Monitor 用户指南。 {C}{C}{C}{C}1{C}{C}{C}{C}{C}{C}{C}{C}{C}
内含内容? {C}{C}{C}{C}2{C}{C}{C}{C}{C}{C}{C}{C}{C}
监控器{C}{C}{C}{C}2{C}{C}{C}{C}{C}{C}{C}{C}{C}
记录什么内容? {C}{C}{C}{C}2{C}{C}{C}{C}{C}{C}{C}{C}{C}
配置助手{C}{C}{C}{C}3{C}{C}{C}{C}{C}{C}{C}{C}{C}
使用配置助手{C}{C}{C}{C}4{C}{C}{C}{C}{C}{C}{C}{C}{C}
管理监控服务。 {C}{C}{C}{C}4{C}{C}{C}{C}{C}{C}{C}{C}{C}
配置服务器。 {C}{C}{C}{C}4{C}{C}{C}{C}{C}{C}{C}{C}{C}
配置数据库。 {C}{C}{C}{C}5{C}{C}{C}{C}{C}{C}{C}{C}{C}
可视化器{C}{C}{C}{C}8{C}{C}{C}{C}{C}{C}{C}{C}{C}
图形视图类型。 {C}{C}{C}{C}13{C}{C}{C}{C}{C}{C}{C}{C}{C}
技术支持{C}{C}{C}{C}16{C}{C}{C}{C}{C}{C}{C}{C}{C}
IBTM 软件包包含三个主要模块:
- 监控器 - 一个基于 Win32 服务的小型程序,用于监控和记录一个或多个数据库中的事务状态。
- 配置助手 用于配置监控器和查看器的设置。
- 可视化器 设计用于查看和分析监控器记录的信息。
监控器是一个基于 Win32 服务的小型程序(ibtm.exe),可在 Windows NT、2000、XP 以及 Windows Server 2003 和 2008(32 位和 64 位)上运行。启动时,监控器读取设置(由配置助手设置)并监控指定的数据库。在监控过程中,它每分钟(推荐的默认间隔)连接到数据库并读取事务状态。
如果 InterBase 或 Firebird 运行在 Windows 上,监控器可以安装在数据库所在的服务器上。对于基于 Linux 的服务器,它可以安装在任何能够通过网络访问 InterBase 或 Firebird 服务器的 Windows 计算机上。您可以使用以下方法安装监控器:
- 使用配置助手
- 从命令行窗口
重要! 在开始安装监控器之前,您需要确保以管理员权限登录 Windows。监控器将作为服务安装,并在本地系统用户帐户下自动启动。
由于监控器仅定期连接到数据库并将收集到的信息写入纯文本日志文件,因此无需应用任何其他规则。但是,如果您想保护监控器配置和数据库登录信息,您必须通过 Windows 服务控制面板根据需要更改监控器的服务设置及其目录(和日志)访问权限。
监控器配置参数将在配置助手中讨论。
监控器定期检查数据库头页面,然后将数据库事务信息存储到日志中,如下所示:
- 日志时间
- 最旧事务编号
- 最旧快照事务编号
- 最旧活动事务编号
- 下一个事务编号
- 活动事务计数(取决于服务器版本)
此信息存储在日志文件中,然后可以使用可视化器查看和分析。利用可视化的事务状态信息,您可以了解应用程序保持事务打开的时间有多长、同时运行的事务数量、快照事务运行的时间、应用程序启动事务最频繁的时间等。
注意: 监控器将事务状态信息记录到本地日志文件中。它不会通过网络发送此信息或任何其他信息。
配置助手(ibtmconfig.exe)用于设置监控器和查看器的配置参数。它将配置参数保存在 ibtm.ini 文件中。
!在 Windows Vista 或 Windows 7 上,您需要以管理员权限运行配置助手(右键单击),否则它将无法管理 IBTM 服务(错误 5,访问被拒绝)。
提示! IBTM 不使用注册表存储配置参数,因此您可以在一台计算机上准备配置,然后将 ibtm.ini 移动到另一台安装了监控器的计算机上(需要重新启动监控服务才能读取新配置)。
监控器和配置助手由 IBTM 安装程序放置在同一个目录中,以便监控器和配置助手共享同一个配置文件(ibtm.ini)。

配置助手帮助您
- 管理监控服务 - 安装、卸载、启动、停止、暂停和重新启动。
- 指定需要监控的 InterBase 或 Firebird 服务器
- 为特定数据库指定数据库和监控/调度选项

当配置助手启动时,它会确定系统上的监控服务状态。
安装监控器 - 如果监控服务未安装,您将在左上角的 IBTM 状态标签中看到“未安装”消息。要安装监控器,请按窗口右侧的“安装”按钮。请注意,监控服务将使用“启动类型”(自动或手动)复选框的值。如果安装监控服务成功,您将看到 IBTM 状态变为“已停止”,并且“运行服务”按钮将被启用。
每当您更改任何数据库配置参数时,都需要重新启动监控服务。
IBTM 使用 TCP/IP 连接协议来访问要监控的数据库。因此,如果您将监控器安装在服务器所在的同一台计算机上,您需要将服务器添加为 localhost 或服务器的主机名。完成后,您将能够添加将在该服务器上监控的数据库。
使用此版本的 IBTM,您一次只能监控一个数据库。同时监控一个或多个数据库需要额外的许可证。请联系我们了解详情( www.ibphoenix.com)。
但是,您可以设置多个服务器和数据库,并在它们之间切换以选择要监控的数据库(活动数据库将以粗体突出显示)。使用额外的许可证,您将能够同时监控多个数据库。
使用数据库列表左侧的“添加服务器”和“添加数据库”按钮。
每个数据库记录可以配置以下参数:
获取统计信息的方法。这取决于服务器版本,并支持不同的功能。每种方法都有其优缺点:
| Services API | Firebird API | TMP$ 表 | |
| InterBase 4.x/5.x | 否 | 否 | 否 |
| InterBase 6.0 Classic | 否 | 否 | 否 |
| Firebird Classic - 1.0, 1.5.0, 1.5.1, 1.5.2 |
否 | 是 | 否 |
| InterBase 6.x SuperServer | 是 | 否 | 否 |
| InterBase 7.x/2007 | 是 | 否 | 是 |
| Firebird Classic 和 SuperServer:1.5.3, 1.5.4 /2.0 | 是 | 是 | 否 |
Services API、Firebird API 和 TMP$ 表之间的区别:
| 方法 | 优点 | 缺点 |
| Services API 在 InterBase 6.0 SuperServer 中引入的公共 API |
- 通用方法,适用于所有版本的 InterBase 和 Firebird - 不影响下一个事务 |
- 无法找到活动事务的真实数量 - 如果服务器很少将数据库头页面保存到磁盘,可能会显示过时的信息(InterBase V7.1/V7.5) |
| Firebird API
Firebird 从 V1.0 开始为 isc_database_info 调用扩展了参数,允许返回事务状态信息。 | 允许获取活动事务数量信息(不超过 4676 个活动事务) | - 任何 InterBase 版本均不支持
- 内部会递增 Next 事务。Monitor 每次连接到数据库时会将 Next 事务递增 +1。如果此时数据库中没有事务活动,Oldest Active、Oldest Snapshot 和 Oldest 事务编号将保持不变。
如果数据库中没有活动,Monitor 本身会在 24 小时内将 Next 事务递增 +1440,前提是它被配置为每分钟检查一次数据库。
(Firebird API 本身没有此效果。所描述的行为是 isc_database_info 方法特有的) |
| TMP$ 表
在 InterBase 7.0 中引入,用于监控服务器状态 | - 允许从 InterBase V7.x/V2007 检索实际事务状态,包括活动事务数量。
- 为获取事务状态信息,Monitor 会以 read_only read_committed rec_version 参数启动一个事务。此类事务在事务核算中不被视为活动事务,且不影响服务器或数据库性能。 | - 仅受 InterBase V7.0/V7.1/V7.5/V2007 支持
- 与 Firebird API 一样,它会递增 Next 事务编号,因为从 TMP$ 表读取数据必须在事务内进行。
- 访问时间比使用 Services API 稍长(< 0.5 秒)。 |
如果您选择的统计方法与您的服务器不兼容,Monitor 的事务日志中将不会写入任何内容。请检查 Configuration Assistant 中的 Error log 选项卡,以查看监控数据库时可能发生的错误。
检查间隔(Check Interval)。这决定了 Monitor 从数据库获取事务信息的频率。最小间隔为 1 分钟。您可以设置 1、3、5、10、20、30 分钟,甚至 1 小时间隔,但最有信息量的间隔是 1 或 3 分钟。
使用 1 分钟间隔时,Monitor 将在每 24 小时内检查数据库事务状态 1440 次。日志文件的大小约为 150 千字节。
开始时间和结束时间(Start time and End Time)。如果未设置,Monitor 将在其工作的整个时间内从指定数据库获取统计数据。如果设置了时间限制,Monitor 将仅在指定时间段内运行。
用户名和密码(User name and Password)。用于监控数据库事务状态的账户的用户名和密码。您可以使用 SYSDBA 登录或任何其他您想要的用户登录。如果使用非 SYSDBA 登录,对于 Services API 和 Firebird API 方法,无需为该用户账户授予任何额外权限。您可以创建一个类似 ‘TM’ 的用户,Monitor 将正常工作。
对于临时系统表(IB V7.1、V7.5、V2007),用户登录必须对 TMP$TRANSACTIONS 和 TMP$DATABASES 表具有读取访问权限。如果您在 InterBase V7.5/V2007 数据库中使用嵌入式用户认证,您需要创建一个登录并显式授予该数据库的这些访问权限。
测试服务器连接(Test Server Connection) 按钮。

允许检查指定服务器以确定最佳的事务监控方法。您也可以使用此按钮来检查所选方法是否适用于指定服务器。
Visualizer 可以查看由 Monitor 收集的事务信息。.tmd 文件的基础目录取自 Configuration Assistant 设置。

在左侧,您可以看到统计文件列表。默认情况下,Viewer 查看基础安装文件夹中的 Log 文件夹。您可以使用 Configuration Assistant 更改此文件夹,或通过 Viewer 菜单选项打开所需文件夹。
点击统计文件 - 它将立即显示在图表中。您可以通过按住 Ctrl 或 Shift 键并点击统计文件来同时查看多个统计数据:

在左下角,您可以打开和关闭不同的图表线(Next、Oldest…)。例如,如果您希望查看事务动态,请打开 Next 动态 - 它将显示在 IBTM 从数据库读取之间启动了多少新事务:

在图表的右侧、左侧、上侧和下侧有特殊的线条,您可以(使用鼠标)拖动它们来检查事件发生的时间和值。查看图表中间的垂直蓝线和棕色水平线。当您移动这些线条时,相应的标签会改变 - 垂直线让您指向特定时间,水平线让您指向特定事务编号:

您还可以在水平、垂直或两个方向上放大或缩小间隔。要将图表恢复到初始状态,请按 Reset Zoom 按钮(或使用鼠标向相反方向缩放)。

重要! 如果 IBTM 统计数据是使用 Firebird 或 InterBase 7.x 访问方法收集的,您可以查看真实的活动事务数量。

此图表显示,在 2005 年 11 月 10 日,有 65 到 105 个由应用程序打开的活动事务。并且可以看出,在午餐时间(13:00 到 14:00)仍有大约 80 个活动事务。这意味着:
- 用户在午餐时没有关闭应用程序
- 应用程序有打开且活动的事务
利用此信息,您可以判断应用程序工作方式可能存在的问题。这将取决于应用程序直接管理的事务数量。
有三个按钮可以更改图表视图:
相对(Relative (oldest))。通过从 Next 和 Oldest Active 事务编号中减去 Oldest 事务或 Oldest Snapshot(取较低者)来计算。允许您通过查看图表左侧的图例来查看半活动事务的差距。以下是上一个图表在 Relative 按钮打开时的示例:

AutoMin。 默认情况下,当您打开任何 IBTM 统计文件时,最低事务编号会自动视为“0”。通常,这将是 Oldest(感兴趣)事务或 Oldest Snapshot。

绝对(Abs)。允许您查看大事务编号的事务编号流和差异。在之前的图像中,最低事务编号约为 700 万,使得难以理解差异是什么,例如,Oldest 和 Next 事务之间的差异。在这里我们可以看到,对于这些统计数据,数据差异不超过 18000 个事务。

如果您希望获得数据库事务行为的专业解释,您可能需要订购我们的技术支持。请在此处了解更多关于我们的服务。
如有任何问题,也欢迎随时通过电子邮件联系我们:[email protected]。