----------------------------------------------------------------------------- -- (c) Copyright IBM Corp. 2007 All rights reserved. -- -- The following sample of source code ("Sample") is owned by International -- Business Machines Corporation or one of its subsidiaries ("IBM") and is -- copyrighted and licensed, not sold. You may use, copy, modify, and -- distribute the Sample in any form without payment to IBM, for the purpose of -- assisting you in the development of your applications. -- -- The Sample code is provided to you on an "AS IS" basis, without warranty of -- any kind. IBM HEREBY EXPRESSLY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR -- IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do -- not allow for the exclusion or limitation of implied warranties, so the above -- limitations or exclusions may not apply to you. IBM shall not be liable for -- any damages you suffer as a result of using, copying, modifying or -- distributing the Sample, even if IBM has been advised of the possibility of -- such damages. ----------------------------------------------------------------------------- -- -- SOURCE FILE NAME: healthmon.db2 -- -- SAMPLE: How to use table functions for Health Monitor Snapshot -- -- SQL STATEMENTS USED: -- SELECT -- TERMINATE -- UPDATE -- -- ----------------------------------------------------------------------------- -- -- For more information about the command line processor (CLP) scripts, -- see the README file. -- -- For information on using SQL statements, see the SQL Reference. -- -- For the latest information on programming, building, and running DB2 -- applications, visit the DB2 Information Center: -- http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp ----------------------------------------------------------------------------- -- HEALTH_MON parameter allows you to specify whether you want to monitor an -- instance, its associated databases, and database objects according to -- various health indicators. This parameter has to be set to ON. UPDATE DBM CFG USING HEALTH_MON ON IMMEDIATE; -- For each logical group (namely DBM, DB2, Tablespace and Container), there -- are three types of UDFs: INFO, HI (Health Indicator) and HI_HIS (Health -- Indicator HIStory) -- CREATE FUNCTION statement is used to register a UDF or function template -- with application server. It has been included here to depict the prototype -- of the UDFs and the table each of them return. -- Usage of UDFs: -- select *|<columnname>[,<columnname>] -- from table( <udfname>( [<database>,] <partition> )) as <aliasname> -- where partition has the following values -- 0..n, with n>0 partition number -- -1 means currently connected partition -- -2 means all partitions -- Snapshot monitor UDF for HMon Snapshot DBM header table CREATE FUNCTION HEALTH_DBM_INFO ( INTEGER ) RETURNS TABLE ( SNAPSHOT_TIMESTAMP TIMESTAMP, SERVER_INSTANCE_NAME VARCHAR(8), ROLLED_UP_ALERT_STATE BIGINT, ROLLED_UP_ALERT_STATE_DETAIL VARCHAR(20), DB2START_TIME TIMESTAMP, LAST_RESET TIMESTAMP, NUM_NODES_IN_DB2_INSTANCE INT ) SPECIFIC HEALTH_DBM_INFO EXTERNAL NAME 'db2dbappext!health_dbm_info' LANGUAGE C PARAMETER STYLE db2sql DETERMINISTIC FENCED CALLED ON NULL INPUT NO SQL EXTERNAL ACTION SCRATCHPAD FINAL CALL DISALLOW PARALLEL; SELECT SERVER_INSTANCE_NAME, DB2START_TIME FROM TABLE (HEALTH_DBM_INFO (CAST(NULL AS INTEGER)) ) AS HEALTH_DBM_INFO; -- Snapshot monitor UDF for HMon Snapshot DBM Health Indicator table CREATE FUNCTION HEALTH_DBM_HI ( INTEGER ) RETURNS TABLE ( SNAPSHOT_TIMESTAMP TIMESTAMP, HI_ID BIGINT, SERVER_INSTANCE_NAME VARCHAR(8), HI_VALUE SMALLINT, HI_TIMESTAMP TIMESTAMP, HI_ALERT_STATE BIGINT, HI_ALERT_STATE_DETAIL VARCHAR(20), HI_FORMULA VARCHAR(2048), HI_ADDITIONAL_INFO VARCHAR(4096) ) SPECIFIC HEALTH_DBM_HI EXTERNAL NAME 'db2dbappext!health_dbm_hi' LANGUAGE C PARAMETER STYLE db2sql DETERMINISTIC FENCED CALLED ON NULL INPUT NO SQL EXTERNAL ACTION SCRATCHPAD FINAL CALL DISALLOW PARALLEL; SELECT SNAPSHOT_TIMESTAMP, HI_ID, SERVER_INSTANCE_NAME, HI_VALUE, HI_ALERT_STATE FROM TABLE (HEALTH_DBM_HI (CAST(NULL AS INTEGER)) ) AS HEALTH_DBM_HI; -- Snapshot monitor UDF for HMon Snapshot DBM Health Indicator History table CREATE FUNCTION HEALTH_DBM_HI_HIS ( INTEGER ) RETURNS TABLE ( SNAPSHOT_TIMESTAMP TIMESTAMP, HI_ID BIGINT, SERVER_INSTANCE_NAME VARCHAR(8), HI_VALUE SMALLINT, HI_TIMESTAMP TIMESTAMP, HI_ALERT_STATE BIGINT, HI_ALERT_STATE_DETAIL VARCHAR(20), HI_FORMULA VARCHAR(2048), HI_ADDITIONAL_INFO VARCHAR(4096) ) SPECIFIC HEALTH_DBM_HI_HIS EXTERNAL NAME 'db2dbappext!health_dbm_hi_his' LANGUAGE C PARAMETER STYLE db2sql DETERMINISTIC FENCED CALLED ON NULL INPUT NO SQL EXTERNAL ACTION SCRATCHPAD FINAL CALL DISALLOW PARALLEL; SELECT SNAPSHOT_TIMESTAMP, HI_ID, SERVER_INSTANCE_NAME, HI_VALUE, HI_ALERT_STATE FROM TABLE (HEALTH_DBM_HI_HIS (CAST(NULL AS INTEGER)) ) AS HEALTH_DBM_HI_HIS; -- Snapshot monitor UDF for HMon Snapshot DB header table CREATE FUNCTION HEALTH_DB_INFO ( VARCHAR(255), INTEGER ) RETURNS TABLE ( SNAPSHOT_TIMESTAMP TIMESTAMP, DB_NAME VARCHAR(8), INPUT_DB_ALIAS VARCHAR(8), DB_PATH VARCHAR(256), DB_LOCATION INT, SERVER_PLATFORM INT, ROLLED_UP_ALERT_STATE BIGINT, ROLLED_UP_ALERT_STATE_DETAIL VARCHAR(20) ) SPECIFIC HEALTH_DB_INFO EXTERNAL NAME 'db2dbappext!health_db_info' LANGUAGE C PARAMETER STYLE db2sql DETERMINISTIC FENCED CALLED ON NULL INPUT NO SQL EXTERNAL ACTION SCRATCHPAD FINAL CALL DISALLOW PARALLEL; SELECT SNAPSHOT_TIMESTAMP, DB_NAME, INPUT_DB_ALIAS, DB_LOCATION, SERVER_PLATFORM FROM TABLE (HEALTH_DB_INFO('SAMPLE', 0 )) AS HEALTH_DB_INFO; -- Snapshot monitor UDF for HMon Snapshot Tablespace Health Indicator table CREATE FUNCTION HEALTH_TBS_HI ( VARCHAR(255), INTEGER ) RETURNS TABLE ( SNAPSHOT_TIMESTAMP TIMESTAMP, TABLESPACE_NAME VARCHAR(18), HI_ID BIGINT, HI_VALUE SMALLINT, HI_TIMESTAMP TIMESTAMP, HI_ALERT_STATE BIGINT, HI_ALERT_STATE_DETAIL VARCHAR(20), HI_FORMULA VARCHAR(2048), HI_ADDITIONAL_INFO VARCHAR(4096) ) SPECIFIC HEALTH_TBS_HI EXTERNAL NAME 'db2dbappext!health_tbs_hi' LANGUAGE C PARAMETER STYLE db2sql DETERMINISTIC FENCED CALLED ON NULL INPUT NO SQL EXTERNAL ACTION SCRATCHPAD FINAL CALL DISALLOW PARALLEL; SELECT TABLESPACE_NAME, HI_ID, HI_VALUE, HI_ALERT_STATE FROM TABLE (HEALTH_TBS_HI( 'SAMPLE', 0 )) AS HEALTH_TBS_HI; -- Snapshot monitor UDF for HMon Snapshot Container Health Indicator History -- table CREATE FUNCTION HEALTH_CONT_HI_HIS( VARCHAR(255), INTEGER ) RETURNS TABLE ( SNAPSHOT_TIMESTAMP TIMESTAMP, CONTAINER_NAME VARCHAR(256), NODE_NUMBER INTEGER, HI_ID BIGINT, HI_VALUE SMALLINT, HI_TIMESTAMP TIMESTAMP, HI_ALERT_STATE BIGINT, HI_ALERT_STATE_DETAIL VARCHAR(20), HI_FORMULA VARCHAR(2048), HI_ADDITIONAL_INFO VARCHAR(4096) ) SPECIFIC HEALTH_CONT_HI_HIS EXTERNAL NAME 'db2dbappext!health_cont_hi_his' LANGUAGE C PARAMETER STYLE db2sql DETERMINISTIC FENCED CALLED ON NULL INPUT NO SQL EXTERNAL ACTION SCRATCHPAD FINAL CALL DISALLOW PARALLEL; SELECT CONTAINER_NAME, HI_VALUE, HI_TIMESTAMP, HI_VALUE FROM TABLE (HEALTH_CONT_HI_HIS( 'SAMPLE', 0 )) AS HEALTH_CONT_HI_HIS; ROLLBACK; -- TERMINATE;