创建传感器

可创建调度程序传感器来收集和存储有关数据库服务器的数据。

必须以用户 gbasedbt 或其他授权用户身份连接 sysadmin 数据库。

要创建传感器,请使用 INSERT 语句在 ph_task 表中添加行:

  1. 包含以下列的值:
    • tk_name:为任务提供唯一名称。
    • tk_description:添加任务所执行的操作的描述。
    • tk_result_table:添加用于保存传感器所收集数据的表的名称。
    • tk_create:添加 CREATE 语句以创建结果表。结果表必须具有名为 ID 的 INTEGER 列,用于容纳传感器标识。可向该表添加其他列。
    • tk_execute:添加传感器执行的操作。该操作可以是用户定义的函数、单个 SQL 语句或使用 PREPARE SQL 创建的多语句预编译对象,该多语句预编译对象用于在运行时组合使用一个或多个 SQL 语句。
  2. 可以选择更改以下列的缺省值:
    • tk_type:缺省值为 SENSOR。对于启动传感器,请将该值更改为 STARTUP SENSOR。
    • tk_delete:删除传感器数据之前的缺省时间间隔为一天。
    • tk_start_time:缺省启动时间为 8:00:00。对于启动传感器,请将启动时间设置为 NULL。
    • tk_stop_time:缺省停止时间为 19:00:00。对于启动传感器,请将停止时间设置为 NULL。
    • tk_frequency:缺省频率为一天一次。对于启动传感器,请将频率设置为 NULL。
    • tk_group:缺省组为 MISC。
    • tk_mondaytk_sunday:缺省值为每天运行。
传感器会在指定的开始时间以及随后通过频率计算的时间运行。

示例

以下示例显示了跟踪数据库服务器启动环境的传感器的代码。传感器当前执行的是 $DATA_SEQ_ID 变量。
INSERT INTO ph_task
(
tk_name,
tk_type,
tk_group,
tk_description,
tk_result_table,
tk_create,
tk_execute,
tk_stop_time,
tk_start_time,
tk_frequency,
tk_delete
)
VALUES
(
"mon_sysenv",
"STARTUP SENSOR",
"SERVER",
"Tracks the database servers startup environment.",
"mon_sysenv",
"create table mon_sysenv (ID integer, name varchar(250), value lvarchar(1024))",
"insert into mon_sysenv select $DATA_SEQ_ID, env_name, env_value 
FROM sysmaster:sysenv",
NULL,
NULL,
NULL,
"60 0:00:00"
);
以下示例显示收集有关正在使用的内存量的信息并在 mon_memory_system 表中存储信息的传感器的代码。如果表不存在,那么任务将创建表。该任务(每 30 分钟运行一次)将删除 mon_memory_system 表中存在时间超过 30 天的任何数据。
INSERT INTO ph_task
(
tk_name,
tk_group,
tk_description,
tk_result_table,
tk_create,
tk_execute,
tk_stop_time,
tk_start_time,
tk_frequency,
tk_delete
)
VALUES
("mon_memory_system",
"MEMORY",
"Server memory consumption",
"mon_memory_system",
"create table mon_memory_system (ID integer, class smallint, size int8,
     used int8, free int8 )",
"insert into mon_memory_system select $DATA_SEQ_ID, seg_class, seg_size,
     seg_blkused, seg_blkfree FROM sysmaster:sysseglst",
NULL,
NULL,
INTERVAL ( 30 ) MINUTE TO MINUTE,
INTERVAL ( 30 ) DAY TO DAY);