DB2监控

快照监视器

快照监视器概述

   在数据库管理器级别,可以通过数据库管理器配置参数来设置监视器开关。
   要查看所有用于开关设置的设置选项,使用get dbm cfg | grep DFT_MON命令。

[db2inst1@db22 Desktop]$ db2 get dbm cfg| grep DFT_MON
   Buffer pool                         (DFT_MON_BUFPOOL) = OFF
   Lock                                   (DFT_MON_LOCK) = OFF
   Sort                                   (DFT_MON_SORT) = OFF
   Statement                              (DFT_MON_STMT) = OFF
   Table                                 (DFT_MON_TABLE) = OFF
   Timestamp                         (DFT_MON_TIMESTAMP) = ON
   Unit of work                            (DFT_MON_UOW) = OFF

要启用或禁用数据库管理器级别的监视器开关设置,使用UPDATE DBM CFG命令,并指定要修改的个别监视器开关。
  例如,以下命令关闭了DFT_MON_TIMESTAMP监视器,来终止时间戳记监视器数据的收集:

db2 update dbm cfg using DFT_MON_TIMESTAMP off

  每个连接至数据库的应用程序(会话)都有其自己的监视器开关集,这些监视器开关与数据库管理器和其他会话无关。应用程序(会话)在连接至数据库时,从数据库管理器上继承它们的监视器开关设置。要查看会话的所有监视器开关设置的设置选项,请使用GET MONITOR SWITCHES命令。您可以使用UPDATE MONITOR SWITCHES命令来更改会话的监视器开关设置。

  例如,以下命令打开LOCK监视器开关,从而启用SNAPSHOT_LOCK快照表函数所使用的监视器元素的收集:

db2 update monitor switches using LOCK on

  SNAPSHOT Monitor(快照监视器)以计算器的形式提供累计信息。快照信息由一种特殊的数据结构提供,这种数据结构可以通过应用程序发出快照来检查。由监视数据结构返回的数据根据表9-1中所定义的开关来设置。这些开关可以在实例(DBM)级别或应用程序会话级别(UPDATE MONITOR SWITCHES)上打开或关闭。表9-1还包含执行快照时所提供的概要信息,以及由Snapshot Monitor提供的基本信息。

| 组别| 所提供的信息| 监视器开关|DBM参数|
| --- | --- | -- | -- |
| 排序| 所用堆的数目、溢出、性能排序| SORT|DFT_MON_SORT|
|锁定|保持锁定数目、死锁数目|LOCK|DFT_MON_LOCK|
|表|测量活动(读行、写行)|TABLE|DFT_MON_TABLE|
|缓冲区|读和写的次数,所用时间|BUFFERPOOL|DFT_MON_BUFFERPOOL|
|工作单元|开始时间、结束时间、完成时间|UOW|DFT_MON_UOW|
|SQL语句|开始时间、停止时间、语句标识|STATEMENT|DFT_MON_STMP|

在DBM(实例)配置参数中设置默认的开关值,将影响该实例中的所有数据库。而且每个与数据库相连接的session(会话)将继承在DBM配置中所设置的默认开关值。

1.查看监控开关设置

  在某种程度上,由于快照监视器开关控制着当一个快照被打开时能够收集到的信息的类型和数量,因此,您应该在开始您的监视进程之前搞清楚哪些开关是打开的而哪些是关闭的。要获得这些信息,最简单的方法就是在CLP中执行GET MONITOR SWITCHES命令。在多分区数据库环境下它的基本语法是:

GET MONITOR SWITCHES  <AT DBPARTITIONNUM [PartitonNum] >```

[db2inst1@db22 Desktop]$ db2 get monitor switches

        Monitor Recording Switches

Switch list for member 0 --数据库分区号为0的开关列表
Buffer Pool Activity Information (BUFFERPOOL) = OFF --缓冲池活动信息
Lock Information (LOCK) = OFF --锁定信息
Sorting Information (SORT) = OFF --排序信息
SQL Statement Information (STATEMENT) = OFF --SQL语句信息
Table Activity Information (TABLE) = OFF --表活动信息
Take Timestamp Information (TIMESTAMP) = ON 04/12/2017 10:25:18.576712 --获取时间戳记信息
Unit of Work Information (UOW) = OFF --工作单元信息

 &emsp;&emsp;从上面可以看到,TIMESTAMP这个快照监视器开关的状态是ON,而其他的都是OFF。在这个开关状态后面显示的是这个开关打开的精确的日期和时间。

####2.改变开关设置

UPDATE MONITOR SWITCHES USING [[SwitchID] ON | OFF, ... ]

####3.获取数据
&emsp;&emsp;当数据库被激活或者与数据库的连接被建立时,快照显示器就会自动的开始收集监视数据。但是,在希望能够查看被监视的数据之前,您必须选取一个快照(快照看起来就像是那个时间点上的监视要素的映像)。您可以通过调用`db2GETSnapshot()` API或者执行`GET SNAPSHOT`命令来得到快照。例9-2指明了这个命令的基本语法,Database Alias用来说明需要做快照监视器信息的数据库别名。
&emsp;&emsp;这两种方法收集的信息都存储于监视器要素中(有时被认为是数据要素),每个要素被设计成存储指定类型的信息。下面列出的是可利用的监视器要素:
1. 计数器
&emsp;&emsp;用来保存活动或者事件发生次数的累计值(例如,对于一个数据库已经执行的SQL语句的总次数)。计数器数值的增长贯穿监视器的生命周期;而在许多情况下,它有可能会被重置。
2.  计量值
&emsp;&emsp;表明一个项目的当前值(例如,当前连接到数据库的应用程序的数量)。
&emsp;&emsp;与计数器不同的是,Gauges(计量)的值可以变高或者变低;它们在任一被测量点的实时值通常取决于数据库活动的级别。
3. 高水位值
&emsp;&emsp;表明一个指标在监视开始以后所能达到的最大值或最小值(例如,util_heap_sz使用的最大值)。
4. 信息要素
&emsp;&emsp;提供所有监视活动执行的细节信息(例如缓冲池名称、数据库名称和别名、详细路径等等)。
5. 时间戳
&emsp;&emsp;表明一个活动或者事件发生的日期和时间(例如第一次连接数据库建立的日期和时间)。
6. 时间要素
&emsp;&emsp;记录时间被花费于执行一个活动或时间的成本(例如:进行排序操作的时间花费)。时间要素的值会以从活动或事件开始所流逝的秒和微秒的数量形式来表现。一些时间要素可以被重置。
&emsp;&emsp;使用`GET SNAPSHOT`命令可以要求一个快照。在我们检查Snapshot Monitor(快照监视器)的输出之前,使我们可以选择如何捕获快照信息。可以利用CLP界面去捕获数据库监视器快照。
&emsp;&emsp;拍快照时,有可能定义一个相关领域。当需要数据库监视时,通常都有具体的需要。因此,对于特定的数据库,如果有一个与并发性(锁定)行为有关的问题,那么可以规定锁定级别。如果用户关心所有访问数据库的应用程序,那么就应当规定应用程序的级别。如果STATEMENT开关被打开并在数据库级别上拍了快照,那么就能捕获有关表的动态SQL语句的活动(INSERT/UPDATE/SELECT/DELETE)信息。还能捕获数据库内每个表的数据库活动信息。可以提供以下级别的快照:
 - DBM(实例监视器)——捕获活动实例的信息
 - Database(数据库)——捕获所有数据库或一个数据库的信息
 - Application(应用程序)——捕获所有应用程序或单个应用程序的信息
 - Table Space(表空间)——捕获数据库内各个表空间的信息
 -Table(表)——捕获数据库内各个表的信息
 - Lock(锁)——捕获使用数据库的应用程序持有的各种锁的信息

例9-2 GET SNAPSHOT命令的语法

db2 get snapshot for dbm
db2 get snapshot for database on dbname
db2 get snapshot for bufferpools on dbname
db2 get snapshot for tables on dbname
db2 get snapshot for locks on dbname
db2 get snapshot for applications on dbname
db2 get snapshot for dynamic on dbname

例9-3 数据库锁定快照

[db2inst1@db22 Desktop]$ db2 update monitor switches using lock on --开启锁定监视
DB20000I The UPDATE MONITOR SWITCHES command completed successfully.
---数据库中做一些操作--
SAMPLE:select * from tb1

ID NAME


      1 java
      2 testincremental
      3 incremental
      4 now incre
      5 no
      6 test my
      7 test forward

7 record(s) selected.

DB2INST1->SAMPLE:update name='uodate' where id=7
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0104N An unexpected token "update" was found following
"BEGIN-OF-STATEMENT". Expected tokens may include: "".
SQLSTATE=42601
DB2INST1->SAMPLE:update tb1 set name='njk' where id=7
DB20000I The SQL command completed successfully.
DB2INST1->SAMPLE:insert into tb1 values(8,'kl')
DB20000I The SQL command completed successfully.
DB2INST1->SAMPLE:delete from tb1 where id=6
DB20000I The SQL command completed successfully.
-------操作完成---

[db2inst1@db22 Desktop]$ db2 get snapshot for locks on sample

        Database Lock Snapshot

Database name = SAMPLE
Database path = /home/db2inst1/db2inst1/NODE0000/SQL00001/MEMBER0000/ -----数据库路径
Input database alias = SAMPLE --输入数据库别名
Locks held = 0 --挂起的锁定
Applications currently connected = 1 --当前已连接的应用程序
Agents currently waiting on locks = 0 --当前正在等待锁的代理程序数
Snapshot timestamp = 04/12/2017 12:06:41.627770 --快照时间戳记

Application handle = 32 --应用程序句柄
Application ID = *LOCAL.DB2.170412040416 --应用程序标识
Sequence number = 00001 --序号
Application name = db2dbctrld --应用程序名
CONNECT Authorization ID = DB2INST1 --CONNECT 授权标识
Application status = Connect Completed --应用程序状态
Status change time = Not Collected --状态更改时间
Application code page = 1208 --应用程序代码页
Locks held = 0 --挂起的锁定
Total wait time (ms) = 0 --总计等待时间(毫秒)

Application handle = 31
Application ID = *LOCAL.DB2.170412040415
Sequence number = 00001
Application name = db2lused
CONNECT Authorization ID = DB2INST1
Application status = Connect Completed
Status change time = Not Collected
Application code page = 1208
Locks held = 0
Total wait time (ms) = 0

Application handle = 30
Application ID = *LOCAL.DB2.170412040414
Sequence number = 00001
Application name = db2wlmd
CONNECT Authorization ID = DB2INST1
Application status = Connect Completed
Status change time = Not Collected
Application code page = 1208
Locks held = 0
Total wait time (ms) = 0

Application handle = 36
Application ID = *LOCAL.DB2.170412040420
Sequence number = 00001
Application name = db2evml_DB2DETAILDEA
CONNECT Authorization ID = DB2INST1
Application status = Connect Completed
Status change time = Not Collected
Application code page = 1208
Locks held = 0
Total wait time (ms) = 0

Application handle = 29
Application ID = *LOCAL.DB2.170412040413
Sequence number = 00001
Application name = db2taskd
CONNECT Authorization ID = DB2INST1
Application status = Connect Completed
Status change time = Not Collected
Application code page = 1208
Locks held = 0
Total wait time (ms) = 0

Application handle = 28
Application ID = *LOCAL.DB2.170412040412
Sequence number = 00001
Application name = db2stmm
CONNECT Authorization ID = DB2INST1
Application status = Connect Completed
Status change time = Not Collected
Application code page = 1208
Locks held = 0
Total wait time (ms) = 0

Application handle = 34
Application ID = *LOCAL.DB2.170412040418
Sequence number = 00001
Application name = db2pcsd
CONNECT Authorization ID = DB2INST1
Application status = Connect Completed
Status change time = Not Collected
Application code page = 1208
Locks held = 0
Total wait time (ms) = 0

Application handle = 27
Application ID = *LOCAL.db2inst1.170412040406
Sequence number = 00007
Application name = db2bp
CONNECT Authorization ID = DB2INST1
Application status = UOW Waiting
Status change time = Not Collected
Application code page = 1208
Locks held = 0
Total wait time (ms) = 0

Application handle = 33
Application ID = *LOCAL.DB2.170412040417
Sequence number = 00001
Application name = db2fw0
CONNECT Authorization ID = DB2INST1
Application status = Connect Completed
Status change time = Not Collected
Application code page = 1208
Locks held = 0
Total wait time (ms) = 0

####4.重置计数器
&emsp;&emsp;

RESET MONITOR ALL
RESET MONITOR FOR [DATABASE | DB] [Database Alias]

###利用表函数监控
&emsp;&emsp;
表9-2 部分表函数列表

| 快照表函数 | 返回的信息 |
| --- | --- |
|SNAPSHOT_DBM|数据库管理器信息|
|SNAPSHOT_DATABASE|数据库信息,只有当至少有一个应用程序连接至数据库时,才会返回信息|
|SNAPSHOT_APPL|连接至分区上数据库的应用程序上有关锁等待的应用程序信息,包括累积计数器、状态信息和最近执行的SQL语句 |
|SNAPSHOT_APPL_INFO|
|SNAPSHOT_LOCKWAIT|
|SNAPSHOT_STATEMENT||
|SNAPSHOT_TABLE||
|SNAPSHOT_LOCK||
|SNAPSHOT_TBS||
|SNAPSHOT_BP||
||SNAPSHOT_DYN_SQL||

快照监视器数据组织
&emsp;&emsp;所有的快照表函数都返回一张监视器数据表,其中的每一行代表一个正被监控的数据库对象实例,而每一列代表一个监视器元素(监视器元素代表数据库系统状态的特定属性)。

捕获监视器数据快照
&emsp;&emsp;
(1)连接至数据库

db2 connect to sample

(2)确定需要捕获的快照类型,以及需要监控的数据库和分区

db2 update dbm cfg using DFT_MON_TABLE on

(3)使用希望的快照表函数发出查询
例如,以下是一个查询,它捕获有关当前已连接分区的SAMPLE数据库的表活动信息的快照:

db2 "select * from table (SNAPSHOT_TABLE('SAMPLE',-1)) as T"

快照表函数有两个输入参数:
- varchar(255):用于数据库名称,如果您输入NULL,那么就使用当前已连接的数据库名称

- smallint:用于分区号

###1.1.3性能管理视图
&emsp;&emsp;使用这些管理视图可以获得与表函数和快照类似的监控数据
表9-3 部分管理视图
|视图名|模式名|描述|
| --- |---|---|
|APPLICATIONS|SYSIBMADM|
|APPL_PERFORMANCE|SYSIBMADM|
|BP_HITRATIO|SYSIBMADM|
|BP_READ_IO|SYSIBMADM|
|BP_WRITE_IO|SYSIBMADM|
|CONTAINER_UTILIZATION|SYSIBMADM|
|LONG_RUNNING_SQL|SYSIBMADM|
|SNAPAGENT_MEMORY_POOL  /SNAP_GET_AGENT_MEMORY_POOL|SYSIBMADM|
|SNAPBP / SNAP_GET_BP_V95|SYSIBMADM|

#快照监视器案例

时间: 2024-07-29 05:20:37

DB2监控的相关文章

实例讲解如何在DB2 UDB中监控死锁的发生

前言:这篇文章通过具体的实例阐述了如何在DB2 UDB 中监控死锁的发生.在DB2 UDB中有两种类型的监控器:快照监控器和事件监控器.快照顾名思义就是数据库连续状态下的一个切面,通过快照监控器,你可以很方便地查看当前连接的应用程序,当前等待的锁,当前的死锁,以及正在执行的SQL语句,同时你可以查看缓冲区,表和表空间的用法.假如保存历史数据,并且能够做出比较,对于分析数据库的并发性能有很大的帮助. 但是我们并不能猜测什么时候发生死锁,所以假如有一个后台程序能够一直监控数据库的活动,记录下所有的死

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

简介 DB2 UDB V8.2 带来了一种新工具称为 db2pd,用于收集 DB2 实例和数据库的统计信息.与 Informix Dynamic Server 的 onstat 工具类似,db2pd 提供了 20 多个选项显示关于数据库事务.表空间.表统计信息.动态 SQL.数据库配置和其他很多数据库细节的信息.单个 db2pd 命令可以检索多个领域的信息,并把结果保存到文件中.也可以在特定时期内调用该工具一定的次数,帮助您了解随着时间的变化数据库中的变动情况.该工具可用于故障检修.问题确定.数

监控IBM DB2数据库的性能的详细步骤

DB2数据库性能监控的具体步骤: 1:创建sql语句的监视器 db2 create event monitor statmon for statements write to file 'C:\IBM\butone\statmon'\" 2:创建目录 md C:\IBM\butone\statmon 3:启动监视器 db2 set event monitor statmon state 1 4:执行任务 do some job to .... 5:完成输出 db2 flush event mon

《DB2性能管理与实战》——第4章 DB2性能监控相关命令及参数

第4章 DB2性能监控相关命令及参数 DB2性能管理与实战本章讲述DB2自带的性能监控的传统工具.命令以及性能优化的一些相关参数,在后面的章节中将介绍最新的DB2的图形化监控和优化工具,使读者能够对不同工具的使用风格有一个全面的了解. 本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.

DB2 Magazine:IDS 11数据库监控

Sysmaster数据库是一种伪数据库,是Informix Dynamic Server(IDS)安装的一部分,表现了IDS服务器的共享内存结构.这是一种监控服务器状态和性能的出色工具.我已经做过一些有关此内容的演讲,也撰写过许多文章. IDS 11(过去的代码名称是"Cheetah")为Sysmaster数据库添加了众多全新特性.此专栏和未来的文章将提供一些示例,说明您可以如何利用全新的 Sysmaster 监控表.如果您参加本月举办的 IBM Information On Dema

DB2 Performance Expert简化性能管理和调优(1)

您是否需要对那些让您可以控制和调优 DB2 UDB 以及 DB2 应用程序的关键性能因素进行详细分析?或者,您是否曾碰到过与 DB2 服务器相关的问题,但是在当前的快照中却无法检测到问题的起因,而您又希望拥有历史监控数据? DB2 Performance Expert V2.1就是一种可以辅助您完成上述任务的工具.本文的第1部分介绍了 DB2 Performance Expert,并说明了它的一些组件.第2 部分将带您亲身体验该产品,演示各种不同的实际应用场景,例如: 确定某种索引是否可以提高性

调优IBM DB2 UDB SQL存取路径

简介 Visual Explain 是 IBM DB2 Universal Database 中的杰出工具,程序员和 DBA 用它来详细说明 DB2 优化器为 SQL 语句所选择的存取路径.事实上,Explain 应该是您性能监控策略的 关键组件.Explain 为解决许多类型的性能问题提供了价值无法估量的信息,因为它提供这样的细节: DB2 在"幕后"所做的工作,以实现 SQL 请求的数据需求 DB2 是否使用可用的索引,如果使用,DB2 如何使用它们 为满足连接条件而访问 DB2

OLTP应用程序的DB2调优技巧

简介 DB2 Universal Database(UDB)是第一个支持多媒体和Web的关系数据库管理系统,它的功能非常强大,足以满足大公司的需求,并且它非常灵活,足以满足中小企业的要求.DB2 产品系列软件和因特网技术的结合使我们可以方便地跨不同平台访问信息.使用信息并且保证信息安全.全世界有30 多万家公司的6000 多万个DB2 用户依赖于 IBM 数据管理解决方案. DB2 UDB 为大多数需要电子商务的应用程序(比如电子商务.企业资源计划.客户关系管理.供应链管理.Web自助服务和商业

DB2 Magazine中文版:支持顺应性的通话记录

自从Alexander Graham Bell于1875年发明电话机以来,人们就想记录和检索通话.虽然这种基本的愿望没有改变,但是记录和有效地检索通话的原因显然已是今非昔比.与过去相比,当今企业之所以要记录通话,是因为它们面临着更多的法律.财政.法规.审计.顺应性.客户服务和数据分析等方面的原因. Freeform Dynamics 在 2006 年做的一次调查显示,在金融服务部门工作的 IT 主管当中,几乎有十分之九的人说遵守法规的需求对于他们的企业来说是至关重要的.然而,只有少数人对他们在关