SNAPSECTION 管理视图和 SNAP_GET_SUBSECTION 表函数-检索子节逻辑监视器组快照信息

SNAPSECTION 管理视图和 SNAP_GET_SUBSECTION 表函数返回有关应用程序子节 (即子节逻辑监视器分组) 的信息。

根据您使用的是管理视图还是表函数,请参阅下列其中一个部分:

SNAP分段管理视图

此管理视图允许您检索当前连接的数据库的子节逻辑监视器组快照信息。

与 MON_CURRENT_SQL 管理视图和 MON_GET_AGENT , MON_GET_CONNECTION , MON_GET_MEMORY_POOL 和 MON_GET_MEMORY_SET 表函数配合使用时, SNAPSECTION 管理视图提供等同于 GET SNAPSHOT FOR APPLICATIONS on database-alias CLP 命令的信息,但从所有数据库成员检索数据。

模式为 SYSIBMADM。

请参阅 表 1 ,以获取可返回的完整信息列表。

授权

需要下列其中一个权限才能使用该视图:
  • SNAP分段管理视图上的 SELECT 特权
  • SNAP分段管理视图上的 CONTROL 特权
  • DATAACCESS 权限
  • DBADM 权限
  • SQLADM 权限
需要下列其中一项才能使用表函数:
  • 对 SNAP_GET_SUBSECTION 表函数的 EXECUTE 特权
  • DATAACCESS 权限
  • DBADM 权限
  • SQLADM 权限
此外,要访问快照监视器数据,还需要下列其中一个权限:
  • SYSMON
  • SYSCTRL
  • SYSMAINT
  • SYSADM

缺省 PUBLIC 特权

在非限制性数据库中,当自动创建视图时,将向 PUBLIC 授予 SELECT 特权。

示例

获取对所有数据库成员执行的子节的状态。
SELECT DB_NAME, STMT_TEXT, SS_STATUS, DBPARTITIONNUM 
   FROM SYSIBMADM.SNAPSUBSECTION 
   ORDER BY DB_NAME, SS_STATUS, DBPARTITIONNUM
下列是从此查询输出的示例。
DB_NAME     STMT_TEXT                  SS_STATUS     DBPARTITIONNUM
-------...- ----------------------...- ---------...- --------------
SAMPLE      select * from EMPLOYEE     EXEC                       0
SAMPLE      select * from EMPLOYEE     EXEC                       1

SNAP_GET_SUBSECTION 表函数

SNAP_GET_SUBSECTION 表函数返回与 SNAPSECTION 管理视图相同的信息,但允许您检索特定数据库成员 (所有数据库成员或所有数据库成员的聚集) 上的特定数据库的信息。

请参阅 表 1 ,以获取可返回的完整信息列表。

与 SNAP_GET_AGENT , SNAP_GET_AGENT_MEMORY_POOL , SNAP_GET_APPL , SNAP_GET_APPL_INFO 和 SNAP_GET_STMT 表函数配合使用, SNAP_GET_SUBSECTION 表函数提供相当于 GET SNAPSHOT FOR ALL APPLICATIONS CLP 命令的信息,但从所有数据库成员检索数据。

语法

Read syntax diagramSkip visual syntax diagramSNAP_GET_SUBSECTION(dbname , member)

模式为 SYSPROC。

表函数参数

数据库名称
类型为 VARCHAR (128) 的输入参数,用于指定与当前连接的数据库在同一实例中的有效数据库名称。 指定目录条目类型为 "Indirect" 或 "Home" 的数据库名称,如 LIST DATABASE DIRECTORY 命令所返回。 指定空字符串以从当前连接的数据库获取快照。 指定 NULL 值以从与当前连接的数据库相同的实例中的所有数据库获取快照。
成员
类型为 INTEGER 的可选输入参数,用于指定有效数据库成员编号。 对当前数据库成员指定 -1 ,或对所有活动数据库成员的聚集指定 -2 。 如果 dbname 未设置为 NULL ,并且 member 设置为 NULL,那么将为 member隐式设置 -1 。 如果未使用此输入选项,即仅提供 dbname ,那么将从所有活动数据库成员返回数据。 活动数据库成员是数据库可供应用程序连接和使用的成员。

如果 dbnamemember 都设置为 NULL,那么将尝试从 SNAP_WRITE_FILE 过程创建的文件中读取数据。 请注意,此文件可能是在任何时候创建的,这意味着数据可能不是最新的。 如果不存在具有相应快照 API 请求类型的文件,那么 SNAP_GET_SUBSECTION 表函数将为当前连接的数据库和数据库成员号生成快照。

授权

需要下列其中一个权限:
  • 对 SNAP_GET_SUBSECTION 表函数的 EXECUTE 特权
  • DATAACCESS 权限
此外,要访问快照监视器数据,还需要下列其中一个权限:
  • SYSMON
  • SYSCTRL
  • SYSMAINT
  • SYSADM

缺省 PUBLIC 特权

在非限制性数据库中,当自动创建该功能时,将向 PUBLIC 授予 EXECUTE 特权。

示例

获取对所有数据库成员执行的子节的状态。
SELECT DB_NAME, STMT_TEXT, SS_STATUS, DBPARTITIONNUM 
   FROM TABLE(SYSPROC.SNAP_GET_SUBSECTION( '', 0 )) as T 
   ORDER BY DB_NAME, SS_STATUS, DBPARTITIONNUM
下列是从此查询输出的示例。
DB_NAME     STMT_TEXT                  SS_STATUS     DBPARTITIONNUM
-------...- ----------------------...- ---------...- --------------
SAMPLE      select * from EMPLOYEE     EXEC                       0
SAMPLE      select * from EMPLOYEE     EXEC                       1

返回的信息

表 1. SNAPSECTION 管理视图和 SNAP_GET_SUBSECTION 表函数返回的信息
列名 数据类型 描述或相应的监视元素
snapshot_timestamp TIMESTAMP 获取快照的日期和时间。
DB_NAME VARCHAR(128) db_name - 数据库名称
STMT_TEXT CLOB (16 米) stmt_text - SQL 语句文本
ss_exec_time BIGINT ss_exec_time - 子节执行耗用时间
TQ_TOT_SEND_SPILLS BIGINT tq_tot_send_spills - 溢出表队列缓冲区总数
tq_cur_send_spills BIGINT tq_cur_send_spills - 当前溢出的表队列缓冲区数
tq_max_send_spills BIGINT tq_max_send_spills - 最大表队列缓冲区溢出数
tq_rows_read BIGINT tq_rows_read - 从表队列读取的行数
tq_rows_written BIGINT tq_rows_written - 写至表队列的行数
ROWS_READ BIGINT rows_read - 读取行数
ROWS_WRITTEN BIGINT rows_written - 写入的行数
SS_USR_CPU_TIME_S BIGINT ss_usr_cpu_time - 子节使用的用户 CPU 时间
SS_USR_CPU_TIME_毫秒 BIGINT ss_usr_cpu_time - 子节使用的用户 CPU 时间
_SYS_CPU_TIME_S BIGINT ss_sys_cpu_time - 子节使用的系统 CPU 时间
_SYS_CPU_TIME_MS BIGINT ss_sys_cpu_time - 子节使用的系统 CPU 时间
ss_number INTEGER ss_number - 子节号
ss_status VARCHAR(20) ss_status-子节状态 。 此接口返回基于 sqlmon.h 中的定义的文本标识,并且是下列其中一项:
  • EXEC
  • TQ_WAIT_TO_RCV
  • TQ_WAIT_TO_SEND
  • COMPLETED
ss_node_number SMALLINT ss_node_number - 子节节点号
tq_node_waited_for SMALLINT tq_node_waited_for - 在表队列上等待节点
tq_wait_for_any INTEGER tq_wait_for_any - 在表队列上等待发送任何节点
tq_id_waiting_on INTEGER tq_id_waiting_on - 在表队列的节点上等待
DBPARTITIONNUM SMALLINT dbpartitionnum -“数据库分区号”监视元素
成员 SMALLINT member -“数据库成员”监视元素
* 要计算此列所基于的监视元素的总耗用时间,必须使用以下公式将以 _S 结束的此监视元素的列中报告的完整秒数与以 _MS 结束的此监视元素的列中报告的小数秒数相加: (monitor-element-name_S × 1,000,000 + monitor-element-name_MS) ÷ 1,000,000。 例如, (ELAPSED_EXEC_TIME_S × 1,000,000 + ELAPSED_EXEC_TIME_MS) ÷ 1,000,000。