创建警报以报告操作或警告存在潜在问题。例如,可创建一个任务,用于在用户会 话终止时终止在 ph_alert 表中插入行的空闲用户。也可创建任务来监视备份,并在 备份未执行时在 ph_alert 表中插入警告。 请在任务或传感器操作中使用以下变量: $DATA_TASK_ID:用于指示当前任务或传感器。该变量对应于 ph_task 表 中 tk_id 字段的值。 $DATA_SEQ_ID: 用于指示任务或传感器的当前执行情况。 该变量对应于 ph_task 表 中的 tk_sequence 字段和 ph_run 表中的 run_task_sequence 字段的值。 示例 以下操作是使用的 SQL 语句,供内置 mon_command_history 任务用于 从 command_history 表中除去较旧的行。 DELETE FROM command_history WHERE cmd_exec_time < ( SELECT CURRENT - value::INTERVAL DAY to SECOND FROM ph_threshold WHERE name = 'COMMAND HISTORY RETENTION' ) 以下示例描述的是 SQL 语句,供内置 mon_vps 传感器用于向 mon_vps 结果表添加数据: INSERT INTO mon_vps SELECT $DATA_SEQ_ID, vpid, num_ready, class, usecs_user, usecs_sys FROM sysmaster:sysvplst 以下示例描述的是存储过程,用于终止空闲时间超过了阈值设置值的用户会话,并且 向 ph_alert 表添加警报。 /* ************************************************************** * Create a function that will find all users that have * been idle for the specified time. Call the SQL admin API to * terminate those users. Create an alert to track which * users have been terminated. ************************************************************** */
{*** Get the maximum amount of time to be idle ***} SELECT value::integer
INTO time_allowed
FROM ph_threshold WHERE name = "IDLE TIMEOUT";
{*** Find all users who are idle longer than the threshold ***} FOREACH SELECT admin("onmode","z",A.sid), A.username, A.sid, hostname INTO rc, sys_username, sys_sid, sys_hostname FROM sysmaster:sysrstcb A , sysmaster:systcblst B, sysmaster:sysscblst C WHERE A.tid = B.tid AND C.sid = A.sid AND lower(name) in ("sqlexec") AND CURRENT - DBINFO("utc_to_datetime",last_run_time) > time_allowed UNITS MINUTE AND lower(A.username) NOT IN( "gbasedbt", "root")
{*** If a user is successfully terminated, log ***} {*** the information into the alert table. ***} IF rc > 0 THEN INSERT INTO ph_alert ( ID, alert_task_id,alert_task_seq, alert_type, alert_color, alert_state, alert_object_type, alert_object_name, alert_message, alert_action