转数据库系统监控器.docx
- 文档编号:17043121
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:10
- 大小:22.16KB
转数据库系统监控器.docx
《转数据库系统监控器.docx》由会员分享,可在线阅读,更多相关《转数据库系统监控器.docx(10页珍藏版)》请在冰点文库上搜索。
转数据库系统监控器
【转】数据库系统监控器
【转】数据库系统监控器2010-05-2121:
54数据库系统监控器数据库监控是一项重要的活动,若将其作为日常活动来执行,将连续提供数据库系统健康状况的反馈信息。
正由于数据库监控是数据
库管理的完整组成部分,DB29提供了一种称为数据库系统监控器的监控实用工具。
尽管其名称"数据库系统监控器"似乎表示仅提供
了一种监控工具,但实际上,数据库系统监控器由两种不同的工具组成,可用于捕获和返回系统监控信息:
一个快照监控器和一个或多个
事件监控器。
快照监控器允许您捕获特定时间点的数据库状态图,而事件监控器在特定数据库事件发生时捕获并记录数据。
这两种工具所
收集的数据均存储在称为监控元素(或数据元素)的实体中。
所使用的各监控元素通过惟一的名称标识,且均设计用于容纳特定类型的信息
。
以下类型的元素用于存储监控数据:
计数器(Counter)。
计数器保存活动或事件已发生的次数。
在监控器的整个生命周期中,计数器值逐渐增加;通常,计数器监
控元素是可重置的。
为某个数据库执行的SQL语句总数就是计数器元素的一个示例。
计量器(Gauge)。
计量器保存在特定时间点发生的活动或事件的次数。
与计数器值不同,计量器值可增加,也可减少,计量器
在给定时间点的值通常取决于数据库活动的级别。
当前连接到某个数据库的应用程序数量就是计量器元素的一个示例。
水位标(Watermark)。
水位标表示自监控开始以来观测到的最高(最大)或最低(最小)值。
更新操作所影响的最大行数就是水位
标元素的一个示例。
信息(Information)。
顾名思义,信息元素提供所执行的全部监控活动的引用类型细节。
信息元素的示例包括缓冲池名称、数
据库名称和别名、路径详细信息等。
时间戳(Timestamp)。
时间戳表示活动或事件发生的日期和时间。
时间戳值以1970年1月1日后流逝的秒和微秒数形式提
供。
与数据库的第一个连接的建立日期和时间就是一个时间戳元素的示例。
时间(Time)。
时间元素保存执行一个活动或事件所花费的时间。
时间值以自活动或事件开始以后流逝的秒和微秒数形式提供
,有些时间元素是可重置的。
执行一次排序操作所花费的时间就是一个时间元素的示例。
数据库系统监控器可利用上述元素的任意组合来捕获监控数据,一旦收集完成,即可使用一些方法为快照监控器和事件监控器展示所
用各元素中存储的数据,您可以选择将收集到的所有数据存储在文件或数据库表中,在屏幕上查看,或使用定制应用程序进行处理。
(数据
库系统监控器使用自我描述的数据流将监控数据返回给客户机应用程序。
使用快照监控应用程序,您可调用恰当的快照API,捕获快照,
然后处理所返回的数据流;使用事件监控应用程序,您可准备好通过文件或指定管道接收所生成的数据,激活适当的事件监控器,并在接收
到数据流时对其加以处理。
)快照监控器快照监控器设计用于收集DB2UDB实例及其控制的数据库在特定时间点(换言之,就是在捕获到快照时)的相关状态信息。
快照对于确
定一个数据库系统的状态非常有用,若按固定时间间隔捕获,则可提供能用于观测发展趋势并识别潜在问题领域的宝贵信息。
要捕获快照
,可在DB2CommandLineProcessor(CLP)中执行GETSNAPSHOT命令,方法是在查询中使用恰当的快照表函数或在C、C++应用程序中
使用快照监控器API。
此外,还可根据具体需求打造快照,以便返回特定类型的监控数据值(例如,可将一个快照配置为仅返回与缓冲池相
关的信息)。
快照监控器开关通常情况下,收集系统监控数据需要额外的处理开销。
例如,为了计算SQL语句的执行时间,DB2DatabaseManager必须调用操作
系统,获取SQL语句执行之前和之后的时间戳。
此类系统调用的成本高昂。
使用系统监控器的另外一个副作用就是所消耗的内存量大大增加--DB2DatabaseManager要使用内存来存储为系统监控器所追踪的
各监控元素收集的数据。
为帮助最小化与收集系统监控信息相关的开销,可使用一组称为快照监控器开关的开关,控制在捕获快照时收集哪些信息,通过这些
快照监控器开关的设置方式来确定所收集的信息类型与数量。
各快照监控器开关都有两种设置:
ON和OFF。
将一个快照监控器开关设置为
OFF时,受此开关控制的元素的监控信息不予收集。
若开关设置为ON,则情况恰好相反。
(切记,有大量监控信息不受开关控制,无论快
照监控器开关如何设置,这些信息总是会被收集。
)表1列出了可用的快照监控器开关,还给出了各开关设置为ON时所收集的信息类型
的描述。
表1.快照监控器开关监控器组监控器开关DBM配置参数所提供的信息缓冲池BUFFERPOOLdft_mon_bufferpool缓冲池活动的数量(换言之,即所执行的读取和写入操作的数量,以及各次读/写操
作所用时间)。
锁LOCKdft_mon_lock具有的锁数量,以及遇到的死锁循环数量。
排序SORTdft_mon_sort所执行的排序操作数量、使用的堆数量、遇到的溢出数、排序性能。
SQL语句STATEMENTdft_mon_stmtSQL语句处理开始时间、SQL语句处理结束时间、SQL语句标识。
表TABLEdft_mon_table所执行的表活动数量,例如读取的行数、写入的行数等。
时间戳TIMESTAMPdft_mon_timestamp时间和时间戳信息。
事务UOWdft_mon_uow事务开始时间、事务结束时间以及事务的完成状态。
默认情况下,表1中的所有开关均设置为OFF,TIMESTAMP开关是个例外,其默认设置为ON,并在一个实例初次启动时初始化。
查看当前快照监控器开关设置前面已经提到,在捕获快照时,所收集的信息类型和数量在某种程度上是可以控制的--通过设置快照监控器开关实现。
在您捕获
快照之前,应了解哪些快照监控器开关已打开,而哪些快照监控器开关依然是关闭的,这一点非常重要。
如何才能了解各可用快照监控器
开关的当前设置呢?
最简单的方法就是在DB2CommandLineProcessor(CLP)中执行GETMONITORSWITCHES命令。
此命令的基本语法是:
GETMONITORSWITCHES其中的PartitonNum标识要为其获取并显示可用快照监控器开关状态的数据库分区(在多分区数据库环境中)。
注意:
尖括号()中的参数是可选的;方括号([])中的参数或选项是必需的;而逗号后接省略号(.)则表示之前的参数可重复使用多
次。
如果您希望为单分区数据库获取并显示快照监控器开关状态,可执行GETMONITORSWITCHES命令,方式如下:
GETMONITORSWITCHES在CommandLineProcessor中执行此命令时,您应看到形式如下的输出结果。
GETMONITORSWITCHES命令的输出MonitorRecordingSwitchesSwitchlistfordbpartitionnumber0BufferPoolActivityInformation(BUFFERPOOL)=OFFLockInformation(LOCK)=OFFSortingInformation(SORT)=OFFSQLStatementInformation(STATEMENT)=OFFTableActivityInformation(TABLE)=OFFTakeTimestampInformation(TIMESTAMP)=ON06-12-200610:
30:
00.028810UnitofWorkInformation(UOW)=OFF观察上述输出后,您会立即注意到TIMESTAMP快照监控器开关已打开,而其他所有开关均为关闭。
紧接于TIMESTAMP监控器开关状
态之后的时间戳值可以告诉您TIMESTAMP监控器开关被打开的准确日期和时间(本例中为2006年6月12日上午10:
30)。
更改快照监控器开关的状态了解哪些快照监控器开关被设置为ON、哪些快照监控器开关被设置为OFF之后,您可能会发现,在开始监控过程之前,有必要更改
一个或多个开关的设置。
快照监控器开关设置可在实例级更改,方法是通过UPDATEDATABASEMANAGERCONFIGURATION命令修改适当的
DB2DatabaseManager配置参数(参见表1)。
另一方面,快照监控器开关设置也可在应用程序级更改,方法是执行UPDATEMONITORSWITCHES命令。
此命令的基本语法是:
UPDATEMONITORSWITCHESUSING[[SwitchID]ON|OFF,.]其中的SwitchID表示要为之更改状态的一个或多个快照监控器开关。
此参数可包含以下任意或全部值:
BUFFERPOOL、LOCK、SORT、
STATEMENT、TABLE、TIMESTAMP以及UOW。
如果您希望在应用程序级将LOCK快照监控器开关的状态更改为ON,可执行UPDATEMONITORSWITCHES命令,如下所示:
UPDATEMONITORSWITCHESUSINGLOCKSON类似地,如果您希望将BUFFERPOOL快照监控器开关设置为OFF,也可执行一条UPDATEMONITORSWITCHES命令,如下所示:
UPDATEMONITORSWITCHESUSINGBUFFERPOOLOFF在实例级设置快照监控器开关(使用UPDATEDATABASEMANAGERCONFIGURATION命令)将影响到受此实例控制的所有数据库(也就是说
,所有与该实例控制的一个数据库建立了连接的应用程序都将继承实例配置中的开关设置)。
此外,在实例级做出的快照监控器开关设置在
实例重启后依然保留。
在应用程序级设置快照监控器开关(使用UPDATEMONITORSWITCHES命令)仅影响到与这一个应用程序交互的数据库。
此外,开关设置
仅在此应用程序的生命周期内持续。
捕获快照监控数据只要数据库被激活或与数据库的连接建立起来,快照监控器立即开始收集监控数据。
但在所收集到的任何数据能够被查看之前,必须
捕获快照(快照实际上就是一张关于所用监控元素在特定时间点的形式的图片)。
可通过在应用程序中嵌入db2GetSnapshot()API捕获快
照,也可通过执行GETSNAPSHOT命令捕获。
此命令的基本语法是:
GETSNAPSHOTFOR[DATABASEMANAGER|DBMANAGER|DBM]|ALLDATABASES|ALLAPPLICATIONS|ALLBUFFERPOOLS|ALLREMOTE_DATABASES|ALLREMOTE_APPLICATIONS|ALLON[DatabaseAlias]|DATABASEON[DatabaseAlias]|APPLICATIONSON[DatabaseAlias]|TABLESON[DatabaseAlias]|TABLESPACESON[DatabaseAlias]|LOCKSON[DatabaseAlias]|BUFFERPOOLSON[DatabaseAlias]|DYNAMICSQLON[DatabaseAlias]其中的DatabaseAlias表示将为其收集快照监控器信息的那个数据库被指派的别名。
在捕获快照时,如果您希望其中仅包含在与PAYROLL数据库交互的应用程序所拥有的锁上收集的数据,可通过执行以下命令来实现:
GETSNAPSHOTFORLOCKSONPAYROLL此命令产生的输出结果应与以下示例类似。
(务必牢记,这只是一个简单的示例。
实际的监控环境往往会生成大批数据。
)GETSNAPSHOT命令输出示例DatabaseLockSnapshotDatabasename=PAYROLLDatabasepath=C:
\DB2\NODE0000\SQL00002\Inputdatabasealias=PAYROLLLocksheld=2Applicationscurrentlyconnected=1Agentscurrentlywaitingonlocks=0Snapshottimestamp=06-12-200408:
39:
40.750316Applicationhandle=8ApplicationID=*LOCAL.DB2.00E286133931Sequencenumber=0001Applicationname=db2bp.exeCONNECTAuthorizationID=DB2ADMINApplicationstatus=UOWWaitingStatuschangetime=NotCollectedApplicationcodepage=1252Locksheld=2Totalwaittime(ms)=NotCollectedListOfLocksLockName=0x94928D848F9F949E7B89505241LockAttributes=0x00000000ReleaseFlags=0x40000000LockCount=1HoldCount=0LockObjectName=0ObjectType=InternalPLockMode=SLockName=0x96A09A989DA09A7D8E8A6C7441LockAttributes=0x00000000ReleaseFlags=0x40000000LockCount=1HoldCount=0LockObjectName=0ObjectType=InternalPLockMode=S如您所见,GETSNAPSHOT命令可用于捕获几种不同类型的监控数据,包括:
DB2DatabaseManager实例数据受一个实例控制的所有活动数据库的数据库数据应用程序数据缓冲池活动数据表空间数据表数据锁数据(关于具有的所有锁的信息)动态SQL数据(SQL语句缓存器在某个时间点所具有的SQL语句的相关信息)或许您已注意到,可用快照监控器开关与捕获快照时可收集的监控数据的各种类型之间有着直接关系。
若将特定快照监控器开关关闭
,再捕获与此开关相关的监控元素的快照,则所捕获到的监控数据将不包含任何值。
(在前面的数据中,所列出的部分值为NotCollected
,这正是因为其对应的快照监控器开关已关闭。
此外,若在捕获快照时未获得任何锁,则Locksheld的值将为0,ListofLocks信息
则根本不会出现。
)使用SQL捕获快照监控数据在DB2UDB的较早版本中,捕获快照监控数据的惟一途径就是执行GETSNAPSHOT命令或在应用程序中调用其相应的API。
在DB2UDBV8.1中,引入了通过构建查询捕获快照监控数据的能力。
这种方法依赖于20个特殊快照监控器表函数,在V9.1中,这些函数的作
用已被弱化。
现在,可使用一组全新的SQL例程来访问特殊管理视图中存储的数据,通过这种方法来获取快照监控数据。
表2介绍了这
些例程和视图。
表2.快照管理SQL例程和视图管理视图例程描述APPLICATIONSN/A这一管理视图包括连接的数据库应用程序的相关信息。
APPL_PERFORMANCEN/A这一管理视图包含选定行与各应用程序读取行数的比率。
BP_HITRATION/A这一管理视图包含缓冲池的命中率,包括总体、数据和索引。
BP_READ_ION/A这一管理视图包含缓冲池的读取性能信息。
BP_WRITE_ION/A这一管理视图包含缓冲池的写入性能信息。
CONTAINER_UTILIZATIONN/A这一管理视图包含表空间容器和利用率的相关信息。
LOCKS_HELDN/A这一管理视图包含当前具有的锁的相关信息。
LOCKWAITSN/A这一管理视图包含等待授权的锁的信息。
LOG_UTILIZATIONN/A这一管理视图包含关于当前连接的数据库的日志利用情况的信息。
LONG_RUNNING_SQLN/A这一管理视图包含当前连接的数据库中运行时间最长的SQL语句的相关信息。
QUERY_PREP_COSTN/A这一管理视图包含一个SQL语句列表,以及关于各语句准备所需时间的信息。
N/ASNAP_WRITE_FILE此过程将系统快照数据写入实例目录的tmp子目录中的一个文件。
SNAPAGENTSNAP_GET_AGENT该管理视图和表函数返回应用程序快照的代理信息,特别是agent逻辑数据组。
SNAPAGENT_MEMORY_POOLSNAP_GET_AGENT_MEMORY_POOL该管理视图和表函数返回代理级的内存使用信息。
SNAPAPPLSNAP_GET_APPL该管理视图和表函数返回应用程序快照的应用程序信息,特别是appl逻辑数据组。
SNAPAPPL_INFOSNAP_GET_APPL_INFO该管理视图和表函数返回应用程序快照的应用程序信息,特别是appl_info逻辑数据组。
SNAPBPSNAP_GET_BP该管理视图和表函数返回缓冲池快照的缓冲池信息,特别是bufferpool逻辑数据组。
SNAPBP_PARTSNAP_GET_BP_PART该管理视图和表函数返回缓冲池快照的缓冲池信息,特别是bufferpool_nodeinfo逻辑数据
组。
SNAPCONTAINERSNAP_GET_CONTAINER_V91该管理视图和表函数返回tablespace_container逻辑数据组的表空间快照信息。
SNAPDBSNAP_GET_DB_V91该管理视图和表函数返回数据库(dbase)和数据库存储(db_storaeg_group)逻辑分组的快照信息。
SNAPDB_MEMORY_POOLSNAP_GET_DB_MEMORY_POOL该管理视图和表函数返回数据库级内存使用情况的信息,仅用于UNIX(R)平台。
SNAPDBMSNAP_GET_DMB该管理视图和表函数返回快照监控器DB2数据库管理器(dbm)逻辑分组信息。
SNAPDBM_MEMORY_POOLSNAP_GET_DBM_MEMORY_POOL该管理视图和表函数返回数据库管理器级的内存使用情况信息。
SNAPDETAILLOGSNAP_GET_DETAILLOG_V91该管理视图和表函数返回detail_log逻辑数据组的快照信息。
SNAPDYN_SQLSNAP_GET_DYN_SQL_V91该管理视图和表函数返回dynsql逻辑数据组的快照信息。
SNAPFCMSNAP_GET_FCM该管理视图和表函数返回数据库管理器快照的快速通信管理器(FCM)相关信息,特别是fcm逻辑数据组。
SNAPFCM_PARTSNAP_GET_FCM_PART该管理视图和表函数返回数据库管理器快照的快速通信管理器(FCM)相关信息,特别是
fcm_node逻辑数据组。
SNAPHADRSNAP_GET_HADR该管理视图和表函数返回数据库快照的高可用性灾难恢复信息,特别是hadr逻辑数据组。
SNAPLOCKSNAP_GET_LOCK该管理视图和表函数返回关于锁的快照信息,特别是lock逻辑数据组。
SNAPLOCKWAITSNAP_GET_LOCKWAIT该管理视图和表函数返回管理锁等待的快照信息,特别是lockwait逻辑数据组。
SNAPSTMTSNAP_GET_STMT该管理视图和表函数返回应用程序快照的语句信息。
SNAPSTORAGE_PATHSSNAP_GET_STORAGE_PATHS该管理视图和表函数从db_storage_group逻辑数据组中为数据库返回一个自动存
储路径列表,特别还包括各存储路径的文件系统信息。
SNAPSUBSECTIONSNAP_GET_SUBSECTION该管理视图和表函数返回关于应用程序子段的信息,也就是子段逻辑监控分组。
SNAPSWITCHESSNAP_GET_SWITCHES该管理视图和表函数返回关于数据库快照开关状态的信息。
SNAPTABSNAP_GET_TAB_V91该管理视图和表函数返回table逻辑数据组中的快照信息。
SNAPTAB_REORGSNAP_GET_TAB_REORG该管理视图和表函数返回表重组信息。
SNAPTBSPSNAP_GET_TBSP_V91该管理视图和表函数返回tablespace逻辑数据组的快照信息。
SNAPTBSP_PARTSNAP_GET_TBSP_PART_V91该管理视图和表函数返回tablespace_nodeinfo逻辑数据组的快照信息。
SNAPTBSP_QUIESCERSNAP_GET_TBSP_QUIESCER该管理视图和表函数返回表空间快照的quiescer信息。
SNAPTBSP_RANGESNAP_GET_TBSP_RANGE该管理视图和表函数返回一个range快照的信息。
SNAPUTILSNAP_GET_UTIL该管理视图和表函数返回utility_info逻辑数据组在实用工具方面的快照信息。
SNAPUTIL_PROGRESSSNAP_GET_UTIL_PROGRESS该管理视图和表函数返回关于实用工具进展的信息,特别是progress逻辑数据组
。
TBSP_UTILIZATIONN/A这一管理视图中包含表空间配置和利用率信息。
TOP_DYNAMIC_SQLN/A这一管理视图中包含可按执行次数、平均执行时间、排序次数或各语句分类排序的顶级动态SQL语句。
举例来说,如果您希望为当前连接的数据库获取锁信息,可执行类似于下面这样的查询:
SELECTAGENT_ID,LOCK_OBJECT_TYPE,LOCK_MODE,LOCK_STATUSFROMSYSIBMADM.SNAPLOCKSNAP_GET_LOCK表函数返回与SNAPLOCK管理视图相同的信息,但允许您为特定数据库或特定数据库分区(而非当前连接的数据库)上
的特定数据库检索信息。
使用SNAP_GET_LOCK表函数的查询形式如下:
SELECTAGENT_ID,LOCK_OBJECT_TYPE,LOCK_MODE,LOCK_STATUSFROMTABLE(SNAP_GET_LOCK('',-1))AST在使用SNAP_GET_LOCKWAIT表函数时,SNAP_GET_LOCK表函数提供的信息与GETSNAPSHOTFORLOCKSON[DatabaseAlias]命令相
同。
重置快照监控器计数器上文已经介绍过,监控元素用于存储数据的一种元素就是计数器,计数器持续保存活动或事件发生的总次数。
计数器值在监控器的整
个生命周期中是逐渐增加的。
那么计数开始的准确时间是什么?
典型情况下,打开快照监控器开关或建立数据库连接时,计数便立即开始(
若使用的是实例级监控,则计数在应用程序第一次建立起与该实例控制的数据库的连接时开始)。
但有时您可能希望将所有计数器重置为0
,而且不想先关闭快照监控器开关,之后再打开,也不希望终止并重新建立数据库连接。
目前,将所有快照监控器计数器迅速重置为0的
最简便的方法就是执行RESETMONITOR命令。
此命令的基本语法是:
RESETMONITORALL或RESETMONITORFOR[DATABASE|DB][DatabaseAlias]其中DatabaseAlias表示将为之重置快照监控器计数器的数据库的别名。
如果您希望将一个实例所控制的所有数据库的快照监控器计数器均重置为0,可以连接到该实例,然后执行一条RESETMONITOR命令
,如下所示:
RESETMONITORAL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 转数 系统 监控器