内容

db2pd 工具

用于监控 DB2 实例和数据库的新的 DB2 UDB 工具

简介

DB2 UDB V8.2 带来了一种新工具称为 db2pd,用于收集 DB2 实例和数据库的统计信息。与 Informix® Dynamic Server 的 onstat 工具类似,db2pd 提供了 20 多个选项显示关于数据库事务、表空间、表统计信息、动态 SQL、数据库配置和其他很多数据库细节的信息。单个 db2pd 命令可以检索多个领域的信息,并把结果保存到文件中。也可以在特定时期内调用该工具一定的次数,帮助您了解随着时间的变化数据库中的变动情况。该工具可用于故障检修、问题确定、数据库监控、性能调优和帮助应用程序的开发设计。本文介绍了这种新的工具,并通过例子说明如何使用它来提高生产率。

使用 db2pd 工具

使用这种强大的工具,必须具有 SYSADMIN 权限,而且在 UNIX® 或 Linux™ 环境中必须是实例的所有者。该命令的语法和选项说明,可以在 DB2 UDB Information Center 中在线找到。查找 db2pd 命令语法最简单的办法是使用 Web 搜索引擎,比如下面使用 Google:

  1. 打开 Google 搜索引擎,如图 1 所示。

    图 1. 使用 Google 搜索引擎搜索 DB2 命令 db2pd

  2. 搜索“db2pd”,如图 2 所示。
    图 2. DB2 命令 dp2pd 在 Google 的搜索结果

  3. 打开 db2pd – Monitor and Troubleshoot DB Command,如图 3 所示。
    图 3. DB2 Information Center 中关于 db2pd 工具的信息

调用 db2pd 工具有两种方式。可以用交互模式调用 db2pd 工具,或者直接在操作系统命令提示符下运行。要是用交互模式执行该工具,可以在操作系统命令提示符下输入 db2pd –interactive 或者直接输入 db2pd,这样将看到 db2pd 命令提示符 db2pd>,可以输入命令选项。使用 –help 选项可以获得帮助信息。退出 db2pd 命令提示符只需要输入 quit 或者 q。图 4 中的例子说明了如何使用交互模式显示当前的代理。

图 4. 用交互模式调用 db2pd

在操作系统命令提示符下调用该工具可以输入带有命令选项的 db2pd 命令。下面的例子(图 5)使用 -agents 选项显示了所有的活动代理。

图 5. 在操作系统命令提示符下调用 db2pd

此外,还可以通过将选项保存在文件中或者在 DB2PDOPT 环境变量中设置选项来控制该命令。下面的例子(图 6)说明可以将 -agents 选项保存在一个(在该例中)名叫 file.out 的文件中,然后使用 db2pd –command file.out 执行选项。

图 6. 将 db2pd 选项保存在文件中

如果要使用 DB2PDOPT 环境变量,可以将 DB2PDOPT 设成需要的选项然后像下面这样调用 db2pd:

图 7. 在 DB2PDOPT 环境变量中设置 db2pd 选项

db2pd 命令有 22 个选项。如果要对所有数据库分区服务器上、所有活动的本地数据库运行所有这些选项,只需要输入 db2pd –everything,也可通过下表所示的范围选项限制信息的范围。

表 1. db2pd 范围选项

范围
范围选项
说明

实例
-inst-ins
用于实例

数据库
-database x–db x
用于特定的数据库x

数据库
-alldatabase–alldb
用于所有数据库

分区
-dbpartitionnum n–dbp n
用于特定的数据库分区服务器 n

分区
-alldbpartitionnums–alldbp
用于实例中的所有数据库分区服务器

注意,dbp2pd 选项可以在实例的范围内,也可以在数据库的范围内。如果使用数据库范围,指定的数据库必须已经激活。表 2 显示了每个 db2pd 选项、选项的说明和对应的范围。

表 2. db2pd 选项的范围

db2pd 选项
说明
范围

agents
返回关于代理的信息
实例

applications
返回应用程序的信息
数据库

bufferpools
返回缓冲池的信息
数据库

Catalogcache
返回目录缓冲的信息
数据库

dbcfg
返回数据库配置参数的设置
数据库

dbmcfg
返回数据库管理器配置参数的设置
实例

dynamic
返回动态 SQL 的执行信息
数据库

fcm
返回快速通信管理器的信息
实例

help
返回 db2pd 命令的帮助信息

logs
返回日志信息
数据库

locks
返回锁定信息
数据库

mempools
返回内存池的信息
两者

memsets
返回内存设置的信息
两者

osinfo
返回操作系统信息
Instance

recovery
返回恢复活动的信息
数据库

reopt
返回使用 REOPT ONCE 选项应用程序重新优化的 Cached SQL 语句的信息
数据库

reorg
返回表重组的信息
数据库

static
返回静态 SQL 和包的执行信息
数据库

sysplex
返回和所有数据库或者某个数据库的别名相关的服务器列表信息
实例

tablespace
返回表空间的信息
数据库

tcbstats
返回表和索引的信息
数据库

transactions
返回活动事务的信息
数据库

version
返回当前 DB2 版本和级别的信息
实例

更好的是,可以指定 –repeat 参数重复该命令。比方说,下面的命令每 2 秒钟显示一次 DB2 内存信息,共 5 次:

1

db2pd –mempools  –repeat 2 5

此外,通过 file= 参数还可以将特定 db2pd 命令选项的结果保存到文件中。file 和 repeat 参数可以结合使用:

1

db2pd –mempools file=memp.txt –repeat 2 5

其中,memp.txt 保存输出结果。

监控的例子

下面这些例子说明了如何用 db2pd 工具监控您的数据库环境。

例 1:

如果希望了解当前 DB2 的级别和当前操作系统的信息,可以输入以下命令:

1

db2pd –version –osinfo

图 8. 监控例子 1

–version 选项显示了系统上运行的当前 DB2 的版本和级别。输入 db2level 命令也可以得到同样的信息。–osinfo 选项显示 OS、CPU、物理内存和虚拟内存信息。类似的 OS 信息也可以在 DB2 启动时的 db2diag.log 中找到。这个例子也说明了获得版本信息和 OS 信息是多么简单,只需要在一个 db2pd 命令中指定两个选项。

例 2:

如果希望了解谁给数据库加了锁,可以使用下面的命令确定这个人:

1

db2pd –database sample –locks –transactions –agents –file lock.txt

db2pd 命令的所有选项都可以使用前三个字符的缩写,只有两个除外:-mempools–memsets。使用缩写形式,上面的例子可以改写为:

1

db2pd –db sample –loc –tra –age –fil lock.txt

上面的命令使用了混合范围选项。–lock/-loc–transactions/-tra 是数据库范围内的选项,agents/–age 是实例范围内的选项。虽然范围选项是混合的,仍然可以显示当前活动代理的锁定和事务信息。使用 –file/-fil 选项,命令的输出保存到 lock.txt 文件中。该命令的消息显示如下。

图 9a. 监控例子 2

要注意,–db 选项被 –agents 选项忽略了。

下图(图 9b)显示了 lock.txt 文件的部分内容。

图 9b. lock.txt 文件的内容

通过以下步骤很容易发现谁加了锁。

  1. 图 9b 中,–lock 选项生成的第一段输出表明,一个共享锁(Mode=S)被句柄号为 3(TranHdl=3)的事务持有,而且锁定的状态是授权(Sts=G)。
  2. –transactions 选项生成的第二部分输出表明,事务句柄号 3 具有应用程序句柄号 28(AppHandl=28)。
  3. 最后,可以在输出的第三部分中发现,ID 为 POONS 的用户拥有应用程序句柄号 28。

事务在等到被锁定的资源时,–locks 在输出中的状态(Sts)将是 W,代表 Waiting(等待)状态。然后使用上面的方法很容易确定谁在等待锁定的资源。

这个例子说明,一个简单的命令可以检索必要的信息确定谁加了锁,也说明可以将多个选项的输出保存到一个文件中,还说明了选项的缩写形式。一旦熟悉了 db2pd 工具,为了更快地执行命令可以使用缩写形式减少按键的次数。但是为了清晰起见,在脚本文件中可能希望避免使用缩写形式。

例 3:

如果需要检查动态 SQL 语句的当前隔离级别,可以使用下面的命令:

1

db2pd –db sample –dynamic

图 10. 监控例子 3

图 10 中,在 Dynamic SQL Environments 部分可以找到执行中的动态 SQL 语句的当前隔离级别。该例中,散列的锚标识符 171 (AnchID=171) 具有最严格的隔离级别,Repeatable Read(可重复读,RR)。通过交叉参照 Dynamic SQL Statements,可以确定哪个具体的 SQL 语句具有 RR 隔离级别:

1

select * from employee

例 4:

如果希望监控表的重组(reorg)状态,在 v8.2 之前可以使用 GET SNAPSHOT FOR TABLES ON 数据库名 检查重组状态。使用 db2pd 工具,执行下面的命令就能获得重组状态:

1

db2pd –db sample –reorg file=reorg.txt

reorg.txt 文件包含以下信息:

图 11a. 监控开始的重组状态

图 11a 中,对表 STAFF 运行了一个离线的重组工具。如果稍后再执行相同的命令,结果将如图 11b 所示,状态已经从“Started”变为了“Done”。“Done”状态表明重组已经完成了。

图 11b. 监控结束的重组状态

例 5:

V8.2 之前的 DB2 UDB 版本中,可以使用命令 DB2 LIST TABLESPACES SHOW DETAIL 检查表空间的状态,现在只需要在操作系统命令提示符下输入以下命令。

1

db2pd -db sample –tablespace

图 12 中可以看到,SAMPLE 数据库中共有三个表:SYSCATSPACE、USERSPACE1 和 SYSTOOLSPACE,在 Tablespaces 节中说明表空间状态为 0x00000800。

图 12a. 监控例子 5

可以使用 db2tbst 命令对表空间状态解码。可以发现,表空间处于“Backup in progress(备份中)”状态。结果如图 12b 所示。

图 12b. db2tbst 命令

结束语

DB2 UDB V8.2 新增的 db2pd 工具对于数据管理员来说是一种方便的工具。这些例子可以帮助您理解这种工具和它的潜在能力。通过试验不同的选项,可以加深理解,并用它简化您的数据库管理任务。

db2pd工具的更多相关文章

  1. (转)Db2 数据库常见堵塞问题分析和处理

    原文:https://www.ibm.com/developerworks/cn/analytics/library/ba-lo-db2-common-blocking-problem-analyze ...

  2. db2笔记

    第七章:数据库备份与恢复 (恢复的概念,db2日志,数据库和表空间的备份,数据库和表空间的恢复,数据库和表空间的前滚,recover使用程序,数据库重建,监控备份恢复和复原,优化备份恢复和复原)1) ...

  3. 【DB2】监控临时表空间使用

    在我们使用数据库的时候,我们都知道应用程序在DB2上运行时,会产生临时表空间,我们想要监测这些临时表空间的使用情况,可以使用以下步骤: (1)打开monitor switches 中的table监视器 ...

  4. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

  5. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  6. 应用工具 .NET Portability Analyzer 分析迁移dotnet core

    大多数开发人员更喜欢一次性编写好业务逻辑代码,以后再重用这些代码.与构建不同的应用以面向多个平台相比,这种方法更加容易.如果您创建与 .NET Core 兼容的.NET 标准库,那么现在比以往任何时候 ...

  7. .NetCore中的日志(2)集成第三方日志工具

    .NetCore中的日志(2)集成第三方日志工具 0x00 在.NetCore的Logging组件中集成NLog 上一篇讨论了.NetCore中日志框架的结构,这一篇讨论一下.NetCore的Logg ...

  8. dll文件32位64位检测工具以及Windows文件夹SysWow64的坑

    自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...

  9. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

随机推荐

  1. unix环境高级编程-3.10-文件共享(转)

    unix系统支持在不同进程间共享打开的文件. 内核使用三种数据结果表示打开的文件. (1)每个进程在进程表中都有一个记录项,记录项中包含有一张打开文件的描述符表,可将其视为一个矢量,每个描述符占用一项 ...

  2. [Done]SnowFlake生成Long类型主键返回前台过长导致精度缺失的问题

    问题描述: 在开发过程中,项目的主键生成器是SnowFlake,其生成的long主键是28位, 但是js中Long的最大值:https://blog.csdn.net/sunmerZeal/artic ...

  3. 浅谈常用的几种web攻击方式

    一.Dos攻击(Denial of Service attack) 是一种针对服务器的能够让服务器呈现静止状态的攻击方式.有时候也加服务停止攻击或拒绝服务攻击.其原理就是发送大量的合法请求到服务器,服 ...

  4. 用 JAAS 和 JSSE 实现 Java 安全性

    JAAS 和 JSSE 概述 JAAS 提供了一种灵活的.说明性的机制,用于对用户进行认证并验证他们访问安全资源的能力.JSSE 定义了通过安全套接字层(SSL)进行安全 Web 通信的一种全 Jav ...

  5. Error loading page Domain: WebKitErrorDomain Error Code: 101

    使用 WebView 组件,loading的过程中出现这个错误. 解决方案: webVIew 里面加 renderError={ (e) => { if (e === 'WebKitErrorD ...

  6. 开源的.NET任务调度框架-HangFire

    什么是Hangfire Hangfire 是一个开源的.NET任务调度框架,目前1.6+版本已支持.NET Core.内置提供集成化的控制台,方便后台查看及监控: 另外,Hangfire包含三大核心组 ...

  7. 趣文分享:有人将Android开发环境比作女人

    (一个移动开发者大会活动推荐:http://www.eoeandroid.com/thread-303943-1-1.html) 趣文分享:有人将Android开发环境比作女人 在日常开发工作中,我们 ...

  8. 三星S4 i9508 4.4.2 root 教程

    现在有很多一键root的软件,但是各怀鬼胎,最好不用. 最近玩腻了三方的rom,刷回了官方的rom,顿时更稳定了,以外的是这个版本的导航被切了,拍手叫好啊.输入法引入了搜狗的云输入,更方便了,官方的输 ...

  9. Java compiler level does not match the version of the installed Java project facet解决办法

    意思就是project facet 和 java compiler level 不一致 解决办法: 修改project facet 方法一: 选中工程,右键 Property -> Projec ...

  10. Oracle---常用SQL语法和数据对象

    1.INSERT  (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSERT INTO 表名(字段名1, 字 ...