MON_GET_AGENT 表函数 - 列示数据库的代理程序、设防方式进程和系统实体
MON_GET_AGENT 函数返回数据库的所有代理程序,受防护方式进程 (db2fmp 进程) 和系统实体的列表。 可以对列表进行过滤以显示指定成员,服务类或应用程序的信息。
这些系统实体为非代理程序线程和进程(例如页清除程序和预取程序)。
请参阅 表 1 ,以获取可返回的完整信息列表。
权限
需要下列其中一个权限:
- 对例程的 EXECUTE 特权
- DATAACCESS 权限
- DBADM 权限
- SQLADM 权限
- WLMADM 权限
缺省 PUBLIC 特权
无
语法
模式为 SYSPROC。
例程参数
- service_superclass_name
- 类型为 VARCHAR(128) 的输入参数,用于指定当前连接的数据库中服务超类的名称。 如果该参数为 NULL 或空字符串,那么会针对数据库中的所有超类检索数据。
- service_subclass_name
- 类型为 VARCHAR(128) 的输入参数,该参数是指超类中的特定子类。 如果该参数为 NULL 或空字符串,那么会针对数据库中的所有子类检索数据。
- 应用程序句柄
- 类型为 BIGINT 的输入参数,该参数指定要针对其返回代理程序信息的应用程序句柄。 如果该参数为 NULL,那么会针对数据库中的所有应用程序检索数据。 如果应用程序句柄为 0,那么仅会返回系统实体。
- 成员
- 类型为 INTEGER 的输入参数,该参数指定与当前所连接数据库在同一实例中的成员的编号。 指定 -1(表示当前数据库成员)或 -2(表示所有活动数据库成员)。 如果指定了空值,那么将隐式设置 -1。
返回的信息
列名 | 数据类型 | 描述 |
---|---|---|
SERVICE_SUPERCLASS_NAME | VARCHAR(128) | service_superclass_name -“服务超类名”监视元素 |
SERVICE_SUBCLASS_NAME | VARCHAR(128) | service_subclass_name -“服务子类名”监视元素 |
APPLICATION_HANDLE | BIGINT | application_handle -“应用程序句柄”监视元素 |
DBPARTITIONNUM | SMALLINT | dbpartitionnum -“数据库分区号”监视元素 |
ENTITY | VARCHAR (32) | 以下某个值:
|
WORKLOAD_NAME | VARCHAR(128) | workload_name -“工作负载名称”监视元素 |
WORKLOAD_OCCURRENCE_ID | INTEGER | workload_occurrence_id -“工作负载项标识”监视元素 |
UOW_ID | INTEGER | uow_id -“工作单元标识”监视元素 |
ACTIVITY_ID | INTEGER | activity_id -“活动标识”监视元素 |
PARENT_UOW_ID | INTEGER | parent_uow_id -“父工作单元标识”监视元素 |
PARENT_ACTIVITY_ID | INTEGER | parent_activity_id -“父活动标识”监视元素 |
AGENT_TID | BIGINT | agent_tid -“代理程序线程标识”监视元素 |
AGENT_TYPE | VARCHAR (32) | 代理程序类型。 代理程序类型如下所示:
对于正在处理 按列组织的 表的代理程序,将返回 SMPSUBAGENT 类型。 |
SMP_COORDINATOR | INTEGER | 指示代理程序是否为 SMP 协调程序:1(代表“是”)和 0(代表“否”)。 |
AGENT_SUBTYPE | VARCHAR (32) | 代理程序子类型。 可能的子类型如下所示:
|
AGENT_STATE | VARCHAR (32) | 指示代理程序是处于关联状态还是活动状态。 可能的值包括:
|
EVENT_TYPE | VARCHAR (32) | 最近一次由此代理程序处理的事件的类型。 可能的值如下所示:
有关此列的可能值的更多信息,请参阅 表 2 。 |
EVENT_OBJECT | VARCHAR (32) | 最近一次由此代理程序处理的事件的对象。 可能的值如下所示:
有关此列的可能值的更多信息,请参阅 表 2 。 |
EVENT_STATE | VARCHAR (32) | 最近一次由此代理程序处理的事件的状态。 可能的值如下所示:
有关此列的可能值的更多信息,请参阅 表 2 。 |
REQUEST_ID | VARCHAR (64) | 请求标识。 此值仅在与 application_handle 的值的组合中唯一。 可使用此组合来区分一个正在花费很长时间的请求与多个请求;例如,用于区分一个费时很长的访存与多个访存。 |
REQUEST_TYPE | VARCHAR (32) | 请求的类型。 可能的值如下所示:
|
REQUEST_TYPE(续) | VARCHAR (32) |
|
NESTING_LEVEL | INTEGER | nesting_level -“嵌套级别”监视元素 |
INVOCATION_ID | INTEGER | invocation_id -“调用标识”监视元素 |
ROUTINE_ID | INTEGER | routine_id -“例程标识”监视元素 |
EVENT_OBJECT_NAME | VARCHAR (1024) | 事件对象名称。
|
APPLICATION_NAME | VARCHAR(128) | |
APPLICATION_ID | VARCHAR(128) | |
CLIENT_PID | BIGINT | |
SESSION_AUTH_ID | VARCHAR(128) | |
REQUEST_START_TIME | TIMESTAMP | 代理程序开始处理其当前正在处理的请求的时间 |
AGENT_STATE_LAST_UPDATE_TIME | TIMESTAMP | 最近一次更改代理程序正在处理的事件的时间。 代理程序当前处理的事件由 EVENT_TYPE 列、EVENT_OBJECT 列和 EVENT_STATE 列标识。 |
EXECUTABLE_ID | VARCHAR (32) FOR BIT DATA | executable_id -“可执行标识”监视元素 |
MEMBER | SMALLINT | member -“数据库成员”监视元素 |
UTILITY_INVOCATION_ID | VARCHAR (32) FOR BIT DATA | utility_invocation_id - 实用程序调用标识 |
IS_SYSTEM_APPL | SMALLINT | is_system_appl -“是系统应用程序”监视元素 |
SUBSECTION_NUMBER | BIGINT | 如果代理程序 (任何代理程序类型) 正在处理子节,那么显示子节标识; 否则显示 NULL。 |
EVENT_OBJECT_DETAILS | VARCHAR (1024) | 显示有关事件等待对象的详细信息。 有关事件等待对象的基本信息显示在 EVENT_OBJECT_NAME 字段中。 |
注: 下表列出了 EVENT_STATE , EVENT_TYPE , EVENT_OBJECT 和 EVENT_OBJECT_NAME 列值的可能组合。
事件描述 | EVENT_STATE 值 | EVENT_TYPE 值 | EVENT_OBJECT 值 | EVENT_OBJECT_NAME 值 | EVENT_OBJECT_DETAILS 值 |
---|---|---|---|---|---|
获取锁定 | IDLE | ACQUIRE | LOCK | 锁定名称 | NULL |
上报锁定 | EXECUTING | PROCESS | LOCK_ESCALATION | NULL | NULL |
处理请求 | EXECUTING | PROCESS | REQUEST | NULL | NULL |
等待新请求 | IDLE | WAIT | REQUEST | NULL | NULL |
等待在远程成员上处理请求 | IDLE | WAIT | REMOTE_REQUEST | NULL | NULL |
等待 WLM 阈值队列 | IDLE | WAIT | WLM_QUEUE | 阈值名称 | NULL |
处理例程 | EXECUTING | PROCESS | ROUTINE | NULL | NULL |
重新创建索引 | EXECUTING | PROCESS | INDEX_RECREATE | NULL | NULL |
构建压缩字典 | EXECUTING | PROCESS | COMP_DICT_BLD | NULL | NULL |
隐式重新绑定 | EXECUTING | PROCESS | IMPLICIT_REBIND | NULL | NULL |
在表队列上发送数据 | IDLE | WAIT | TQ_SEND | 表队列号 | 正在等待表队列的成员号,或 -1 表示任何成员。 |
在表队列上接收数据 | IDLE | WAIT | TQ_RECEIVE | 表队列号 | 正在等待表队列的成员号,或 -1 表示任何成员。 |
锁存器等待时间 | IDLE | WAIT | 锁存器 | 锁存器名称 | NULL |
使用说明
这些参数实际上是一起评估的。 即,如果指定有冲突的输入参数(例如指定服务超类 SUP_A 和子类 SUB_B,这样 SUB_B 不是 SUP_A 的子类),那么不会返回任何行。
示例
- 以下查询会针对所有数据库成员返回与应用程序句柄
1 关联的代理程序的列表。 可通过使用 LIST APPLICATIONS 命令或
MON_GET_CONNECTION 表函数来确定应用程序句柄。
SELECT SUBSTR(CHAR(APPLICATION_HANDLE),1,7) AS APPHANDLE, SUBSTR(CHAR(MEMBER),1,4) AS MEMB, SUBSTR(CHAR(AGENT_TID),1,9) AS AGENT_TID, SUBSTR(AGENT_TYPE,1,11) AS AGENTTYPE, SUBSTR(AGENT_STATE,1,10) AS AGENTSTATE, SUBSTR(REQUEST_TYPE,1,12) AS REQTYPE, SUBSTR(CHAR(UOW_ID),1,6) AS UOW_ID, SUBSTR(CHAR(ACTIVITY_ID),1,6) AS ACT_ID FROM TABLE(MON_GET_AGENT(CAST(NULL AS VARCHAR(128)), CAST(NULL AS VARCHAR(128)), 1, -2)) AS SCDETAILS ORDER BY APPHANDLE, MEMB, AGENT_TID
样本输出如下所示:
输出显示成员 0 上的协调代理程序和子代理程序,以及代表 UOW 标识为 1 且活动标识为 5 的活动的成员 1 上的子代理程序。 值为APPHANDLE MEMB AGENT_TID AGENTTYPE AGENTSTATE REQTYPE UOW_ID ACT_ID --------- ---- --------- ----------- ---------- -------------- ------ ------ 1 0 3 COORDINATOR ACTIVE FETCH 1 5 1 0 4 SUBAGENT ACTIVE SUBSECTION:1 1 5 1 1 2 SUBAGENT ACTIVE SUBSECTION:2 1 5
COORDINATOR
的AGENTTYPE
列对于REQTYPE
列具有值FETCH
(指示主请求类型或初始请求类型)。 这意味着,对于该协调程序代理程序,请求的类型是访存请求。 - 以下查询确定代理程序正在等待哪个锁定:
select event_object, event_type, event_state, varchar(event_object_name, 30) as event_object_name from table(MON_GET_AGENT('','',cast(NULL as bigint), -1)) as t
样本输出如下所示:
稍后使用同一查询会显示 WLM 阈值已对代理程序进行排队:EVENT_OBJECT EVENT_TYPE EVENT_STATE EVENT_OBJECT_NAME --------------- ----------------- ------------------- -------------------------- REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST WAIT IDLE - LOCK ACQUIRE IDLE 02000500000000000000000054 ROUTINE PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - 21 record(s) selected.
EVENT_OBJECT EVENT_TYPE EVENT_STATE EVENT_OBJECT_NAME --------------- ----------------- ------------------- -------------------------- REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - WLM_QUEUE WAIT IDLE MYCONCDBCOORDTH ROUTINE PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - REQUEST PROCESS EXECUTING - 21 record(s) selected.
- 在此示例中,应用程序正在具有 BLU Acceleration的分区数据库环境中运行。 您希望收集有关所涉及的各种代理程序的状态的一些信息。 您可以使用快照界面来确定项,例如:
- 哪些代理程序正在处理哪个子节
- 在表队列上的子节之间发送和接收的行数
- 从磁盘读取和写入的一个或多个行数
以下查询可用于收集有关所涉及的各种代理程序的状态的信息。 此查询假定您知道应用程序编号 (例如,在本例中为 349):SELECT SUBSTR(CHAR(APPLICATION_HANDLE),1,7) AS APPHANDLE, SUBSTR(CHAR(MEMBER),1,4) AS MEMB, SUBSTR(CHAR(AGENT_TID),1,20) AS AGENT_TID, SUBSTR(AGENT_SUBTYPE,1,10) AS AGENT_SUBTYPE, SUBSTR(AGENT_TYPE,1,11) AS AGENTTYPE, SUBSTR(AGENT_STATE,1,10) AS AGENTSTATE, SUBSTR(EVENT_STATE,1,10) AS EVENT_STATE, SUBSTR(EVENT_TYPE,1,10) AS EVENT_TYPE, SUBSTR(EVENT_OBJECT,1,10) AS EVENT_OBJECT, SUBSTR(REQUEST_TYPE,1,12) AS REQTYPE, SUBSTR(EVENT_OBJECT_NAME,1,10) AS TQ_ID, SUBSTR(CHAR(SUBSECTION_NUMBER),1,4) AS SUB_ID, SUBSTR(EVENT_OBJECT_DETAILS,1,10) AS TQ_WAIT_MEM FROM TABLE(MON_GET_AGENT(CAST(NULL AS VARCHAR(128)), CAST(NULL AS VARCHAR(128)), 349, -2)) AS SCDETAILS ORDER BY APPHANDLE, MEMB, AGENT_TID
注: EVENT_OBJECT_NAME 显示为 TQ_ID , SUBSECTION_NUMBER 显示为 SUB_ID , EVENT_OBJECT_DETAILS 显示为 TQ_WAIT_MEM。 TQ_WAIT_MEM 表示您正在等待的成员,其中 -1 表示 "任何"。下列是从此查询输出的示例。
APPHANDLE MEMB AGENT_TID AGENT_SUBTYPE AGENTTYPE AGENTSTATE ... --------- ---- -------------------- ------------- ----------- ---------- ... 349 0 250 - COORDINATOR ACTIVE ... 349 0 338 COLUMNAR SMPSUBAGENT ACTIVE ... 349 0 343 COLUMNAR SMPSUBAGENT ACTIVE ... 349 0 335 SMP SMPSUBAGENT ACTIVE ... 349 0 336 SMP SMPSUBAGENT ACTIVE ... 349 1 277 COLUMNAR SMPSUBAGENT ACTIVE ... 349 2 278 COLUMNAR SMPSUBAGENT ACTIVE ...
查询的输出(继续)。...EVENT_STATE EVENT_TYPE EVENT_OBJECT REQTYPE TQ_ID SUB_ID TQ_WAIT_MEM ...----------- ---------- ------------ ------------ ---------- ------ ----------- ...IDLE WAIT TQ_RECEIVE OPEN 1 0 -1 ...IDLE WAIT TQ_SEND SUBSECTION:2 3 2 -1 ...IDLE WAIT TQ_RECEIVE - 2 0 -1 ...IDLE WAIT REQUEST - - 0 - ...EXECUTING PROCESS REQUEST - - 0 - ...IDLE WAIT TQ_SEND SUBSECTION:2 3 2 -1 ...IDLE WAIT TQ_SEND SUBSECTION:2 3 2 -1
在此示例中, AGENT_TID 值为 338 的代理程序表示分区 0; 值 277 表示分区 1; 值 278 表示分区 2。 所有这三个代理程序都在等待发送到所有分区上的 TQ_ID 3。 发送至所有分区称为广播。 在这种情况下,此广播发生在子节标识 2 中。 分区 0 上标识为 250 的代理程序正在处理子节 0 ,并且正在等待从任何分区接收 TQ_ID 1。 标识为 343 的代理程序也在子节 0 上等待接收,但在 TQ_ID 2 上等待从任何分区接收。 标识为 335 和 336 的代理程序未在等待任何 TQ。