创建任务

可以创建调度程序任务,以用于在特定时间执行特定操作。

必须以用户 gbasedbt 或其他授权用户身份连接 sysadmin 数据库。
要创建任务,请使用 INSERT 语句在 ph_task 表中添加一行:
  1. 包含以下列的值:
    1. tk_name:为任务提供唯一名称。
    2. tk_type:将作业类型更改为 TASK 或 STARTUP TASK。
    3. tk_description:添加任务所执行的操作的描述。
    4. tk_execute:添加任务所执行的操作。
      该操作可以是用户定义的函数、单个 SQL 语句或使用 PREPARE SQL 创建的多语句预编译对象,该多语句预编译对象用于在运行时组合使用一个或多个 SQL 语句。
      命令长度限制为 2048 个字节。
  2. 可选: 更改以下列的缺省值:
    • tk_start_time:缺省启动时间为 8:00:00。对于启动任务,请将启动时间设置为 NULL。
    • tk_stop_time:缺省停止时间为 19:00:00。对于启动任务,请将停止时间设置为 NULL。
    • tk_frequency:缺省频率为一天一次。对于启动任务,请将频率设置为 NULL。
    • tk_group:缺省组为 MISC。
    • tk_mondaytk_sunday:缺省值为每天运行。
任务会在指定的开始时间以及随后通过频率计算的时间运行。

示例

以下任务使用 SQL 管理 API 在周一、周三和周五早上 8 点到晚上 7 点之间,每隔两分钟执行一个检查点。

INSERT INTO ph_task
( tk_name,
tk_description,
tk_type,
tk_group,
tk_execute,
tk_start_time,
tk_stop_time,
tk_frequency,
tk_Monday,
tk_Tuesday,
tk_Wednesday,
tk_Thursday,
tk_Friday,
tk_Saturday,
tk_Sunday)
VALUES
( "Example Checkpoint",
"Example to do a checkpoint every 2 minutes.",
"TASK",
"EXAMPLES",
"EXECUTE FUNCTION admin('checkpoint')",
DATETIME(08:00:00) HOUR TO SECOND,
DATETIME(19:00:00) HOUR TO SECOND,
INTERVAL ( 2 ) MINUTE TO MINUTE,
't',
‘f',
't',
‘f',
't',
‘f',
‘f');
以下示例显示了在一天的凌晨 2:00 运行一次的任务代码,以确保 command_history 表仅包含最近的数据。在该示例中,最近数据的定义存储在 ph_threshold 表的 Command History Interval 列中。
INSERT INTO ph_task
(
tk_name,
tk_group,
tk_description,
tk_type,
tk_execute,
tk_start_time,
tk_frequency
)
VALUES
(
"mon_command_history",
"TABLES",
"Monitor how much data is kept in the command history table",
"TASK",
"delete from command_history where cmd_exec_time < (
        select current - value::INTERVAL DAY to SECOND
        from ph_threshold
        where name = 'COMMAND HISTORY INTERVAL' ) ",
"2:00:00",
"1 0:00:00"
);