ITPub博客

首页 > Linux操作系统 > Linux操作系统 > db2pd 工具

db2pd 工具

原创 Linux操作系统 作者:jst143 时间:2011-03-17 10:51:36 0 删除 编辑

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 次:

db2pd –mempools  –repeat 2 5

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

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

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


监控的例子

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

例 1:

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

db2pd –version –osinfo


图 8. 监控例子 1
监控例子 1

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

例 2:

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

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

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

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

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


图 9a. 监控例子 2
监控例子 2

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

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


图 9b. lock.txt 文件的内容
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 语句的当前隔离级别,可以使用下面的命令:

db2pd –db sample –dynamic


图 10. 监控例子 3
监控例子 3

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

select * from employee

例 4:

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

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 检查表空间的状态,现在只需要在操作系统命令提示符下输入以下命令。

db2pd -db sample –tablespace

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


图 12a. 监控例子 5
监控例子 5

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


图 12b. db2tbst 命令
db2tbst 命令 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23577591/viewspace-689700/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 分区表空间
请登录后发表评论 登录
全部评论

注册时间:2010-05-06

  • 博文量
    109
  • 访问量
    138822