返回首页

gbase数据、南大通用产品文档:GBase8s创建任务

更新日期:2024年09月11日

可以创建调度程序任务,以用于在特定时间执行特定操作。
必须以用户 gbasedbt 或其他授权用户身份连接 sysadmin 数据库。
要创建任务,请使用 INSERT 语句在 ph_task 表中添加一行:
1.
包含以下列的值:
a. tk_name:为任务提供唯一名称。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 528 -
b. tk_type:将作业类型更改为 TASK 或 STARTUP TASK。
c. tk_description:添加任务所执行的操作的描述。
d. 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_monday 到 tk_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,

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 529 -
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",

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 530 -
"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"
);


GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 235 -

如何使用更新游标的一个最终的假设示例提出一个问题,使用已建立的数据库不应出现该
问题,但在应用程序的初始设计阶段可能出现。
在该示例中,创建并操纵一个名为 target 的大型表。字符列 dactyl 无意中获得一些空值。应
删除这些行。此外,使用 ALTER TABLE 语句将新列serials 添加到表。此列将安装唯一的
整数值。下列示例展示您用来完成这些任务的 GBase 8s ESQL/C 代码:
EXEC SQL BEGIN DECLARE SECTION;
char dcol[80];
short dcolint;
int sequence;
EXEC SQL END DECLARE SECTION;

EXEC SQL DECLARE target_row CURSOR FOR
SELECT datcol
INTO :dcol:dcolint
FROM target
FOR UPDATE OF serials;
EXEC SQL BEGIN WORK;
EXEC SQL OPEN target_row;
if (sqlca.sqlcode == 0) EXEC SQL FETCH NEXT target_row;
for(sequence = 1; sqlca.sqlcode == 0; ++sequence)
{
if (dcolint < 0) /* null datcol */
EXEC SQL DELETE WHERE CURRENT OF target_row;
else
EXEC SQL UPDATE target SET serials = :sequence
WHERE CURRENT OF target_row;
}
if (sqlca.sqlcode >= 0)
EXEC SQL COMMIT WORK;
else EXEC SQL ROLLBACK WORK;

GBase 8c 提供了多种修改GUC 参数的方法,用户可以方便的针对数据库、用户、会话
进行设置。

参数名称不区分大小写。

参数取值有整型、浮点型、字符串、布尔型和枚举型五类。

布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),
且不区分大小写。

枚举类型的取值是在系统表pg_settings 的enumvals 字段取值定义的。

对于有单位的参数,在设置时请指定单位,否则将使用默认的单位。

参数的默认单位在系统表pg_settings 的unit 字段定义的。

内存单位有:KB(千字节)、MB(兆字节)和GB(吉字节)。

时间单位:ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。
具体参数说明请参见GUC 参数说明。