gbase8s的定时任务的使用方式基础版-创建简单的定时任务
1. 本次模拟的库表结构和数据
- 建两张表test_db和test_db2,
> create database test_db in datadbs1;Database closed.Database created.
> create table test_db(id int,tm timestamp);Table created.> create table test_db2(id int,tm timestamp);Table created.> insert into test_db values(1,sysdate);1 row(s) inserted.> select * from test_db;id  1
tm  2025-07-31 09:20:171 row(s) retrieved.>
2. 模拟的任务
- 每分钟从将test_db表的数据查询插入到test_db2中
- 每小时从将test_db表的数据查询插入到test_db2中
- 每天0点从将test_db表的数据查询插入到test_db2中
3. 准备工作
- 查看安装目录的etc/sysadmin下是否有stop文件,如果有则删除重启,如果没有则可以使用
[gbasedbt@node2 sysadmin]$ onstat -g dis
Your evaluation license will expire on 2026-07-09 00:00:00
On-Line -- Up 00:21:11 -- 2300592 Kbytes
There are 5 servers found
Server        : test363
Server Number : 27
Server Type   : IDS
Server Status : Up
Server Version: GBase Database Server Version 12.10.FC4G1TL
Shared Memory : 0x44000000
GBASEDBTDIR   : /home/gbasedbt/gbase363
ONCONFIG      : /home/gbasedbt/gbase363/etc/onconfig.test363
SQLHOSTS      : /home/gbasedbt/gbase363/etc/sqlhosts.test363
Host          : node2[gbasedbt@node2 sysadmin]$ ls -l /home/gbasedbt/gbase363/etc/stop
-rw-rw-r-- 1 gbasedbt gbasedbt 0 Oct 30 22:27 /home/gbasedbt/gbase363/etc/stop
[gbasedbt@node2 sysadmin]$ rm -rf /home/gbasedbt/gbase363/etc/stop
[gbasedbt@node2 sysadmin]$ onmode -ky
Your evaluation license will expire on 2026-07-09 00:00:00
[gbasedbt@node2 sysadmin]$ oninit -vy
4. 模拟任
4. 模拟任务1-每分钟将test_db的数据插入到test_db2中
- 为了更好的区分定时任务的类别,可以在定时任务组中提前定义一个组类
dbaccess sysadmin -INSERT INTO ph_group (group_name,group_description)
VALUES(
'trx',
'trx user task'
);
- trx:是定义的组名,可以随意定义,但是最好是小写,大写需要其他参数
- trx user task:是组名的注释
插入定时任务的样例
dbaccess sysadmin -INSERT INTO ph_task
( tk_name,
tk_description,
tk_type,
tk_dbs,
tk_group,
tk_execute,
tk_start_time,
tk_stop_time,
tk_next_execution,
tk_frequency,
tk_Monday,
tk_Tuesday,
tk_Wednesday,
tk_Thursday,
tk_Friday,
tk_Saturday,
tk_Sunday)
VALUES
( "data insert",   --定义的定时任务名称
" every 1 minutes  insert .",   -定时任务的描述
"TASK",     --定时任务的类型,选task即可
"test_db",  --执行的数据库
"TRX",      --上述在分区表中创建的分组名,
"insert into test_db:test_db2 select * from test_db:test_db",  --执行的sql
DATETIME(00:00:00) HOUR TO SECOND,   --执行的起始时间为0点
DATETIME(23:59:00) HOUR TO SECOND,   --执行的结束时间
'2025-07-31 10:44:00',  --指定开始执行sql的时间
INTERVAL ( 1 ) MINUTE TO MINUTE,     --执行的时间的间隔
't',     --下面是周一到周天是否执行的设置,全部为t表示每天都执行
't',
't',
't',
't',
't',
't');
dbaccess sysadmin -INSERT INTO ph_task
( tk_name,
tk_description,
tk_type,
tk_dbs,
tk_group,
tk_execute,
tk_start_time,
tk_stop_time,
tk_next_execution,
tk_frequency,
tk_Monday,
tk_Tuesday,
tk_Wednesday,
tk_Thursday,
tk_Friday,
tk_Saturday,
tk_Sunday)
VALUES
( "data insert",   
" every 1 minutes  insert .",
"TASK",
"test_db",
"TRX",
"insert into test_db2(id,tm) select * from test_db",
DATETIME(00:00:00) HOUR TO SECOND,
DATETIME(23:59:00) HOUR TO SECOND,
'2025-07-31 10:44:00',
INTERVAL ( 1 ) MINUTE TO MINUTE,
't',
't',
't',
't',
't',
't',
't');5. 模拟任务2-每小时0点执行一次
dbaccess sysadmin -INSERT INTO ph_task
( tk_name,
tk_description,
tk_type,
tk_dbs,
tk_group,
tk_execute,
tk_start_time,
tk_stop_time,
tk_next_execution,
tk_frequency,
tk_Monday,
tk_Tuesday,
tk_Wednesday,
tk_Thursday,
tk_Friday,
tk_Saturday,
tk_Sunday)
VALUES
( "data insert2",   
" every 1 minutes  insert .",
"TASK",
"test_db",
"TRX",
"insert into test_db2(id,tm) select * from test_db",
DATETIME(00:00:00) HOUR TO SECOND,
DATETIME(23:59:00) HOUR TO SECOND,
'2025-07-31 11:00:00',
INTERVAL ( 1 ) HOUR TO hour,
't',
't',
't',
't',
't',
't',
't');6. 每天零点执行-启动时间为0点,结束时间为0.59,间隔一小时执行,保证了只会在0点执行
dbaccess sysadmin -INSERT INTO ph_task
( tk_name,
tk_description,
tk_type,
tk_dbs,
tk_group,
tk_execute,
tk_start_time,
tk_stop_time,
tk_next_execution,
tk_frequency,
tk_Monday,
tk_Tuesday,
tk_Wednesday,
tk_Thursday,
tk_Friday,
tk_Saturday,
tk_Sunday)
VALUES
( "data insert3",   
" every 1 minutes  insert .",
"TASK",
"test_db",
"TRX",
"insert into test_db2(id,tm) select * from test_db",
DATETIME(00:00:00) HOUR TO SECOND,
DATETIME(23:59:00) HOUR TO SECOND,
'2025-08-01 00:00:00',
INTERVAL ( 1 ) day TO day,
't',
't',
't',
't',
't',
't',
't');7. 涉及的表结构和表的作用
- ph_task:存储设计的定时任务
- ph_run:查看对应id编号的定时任务执行时间等信息
- ph_alert:查看定时任务对应id的警报信息
- ph_threshold:关于有阈值设置的定时任务的阈值设置
- ph_group:插入组名
8. ph_task表的含义
select * from ph_task order by tk_id desc limit 1;tk_id               48
tk_name             data insert
tk_description       every 1 minutes  insert .
tk_type             TASK
tk_sequence         0
tk_result_table
tk_create
tk_dbs              test_db
tk_execute          insert into test_db2(id,tm) select * from test_db
tk_delete             0 01:00:00
tk_start_time       00:00:00
tk_stop_time        23:59:00
tk_frequency          0 00:01:00
tk_next_execution   2025-07-31 10:44:00
tk_total_executio+  0
tk_total_time       0.00
tk_monday           t
tk_tuesday          t
tk_wednesday        t
tk_thursday         t
tk_friday           t
tk_saturday         t
tk_sunday           t
tk_attributes       0
tk_group            trx
tk_enable           t
tk_priority         0查询到 1 行。
- tk_id:定时任务的创建序号,由系统自动生成即可。
- tk_name:任务名称,此列要求名称不能重复
- tk_description:关于任务的描述注释,可以写也可以不写
- tk_type:任务类型
- task:以特定的时间和频率调用操作,常规操作
- sensor:传感器任务,由其他结果集触发,一个从结果表中收集、存储和清除数据的任务
- startup task:仅在服务器启动时运行的任务
- startup sensor:仅在服务器启动时运行的传感器
 
- tk_result_table:传感器用来收集数据的结果集名称
- tk_create:用于创建传感器收集数据结果表的建表语句
- tk_dbs:运行任务的数据库,默认是sysadmin,需要在test库运行定时任务就写test
- tk_execute:定时执行的sql语句
- tk_delete:删除结果表中遭遇该时间间隔的数据
- tk_start_time:任务传感器开始执行的时间,在这个时间之前,定时任务不执行
- tk_stop_time:tk_start_time和tk_stop_time共同约束了定时任务可执行的时间阈值
- tk_frequency:定时任务执行的间隔时间
- tk_next_execution:定时任务下次执行的时间,当一个定时任务创建后,可以指定其下次执行的时间节点,之后按照间隔时间进行下次执行
- tk_total_executions:定时任务执行的总次数
- tk_monday、tk_tuesday、tk_wednesday、tk_thursday、tk_friday、tk_saturday、tk_sunday:七个字段,代表是否在周一到周天七天执行,如果七天都执行都为true
- tk_group:这个定时任务的组名,主要是用于区分各个定时任务的分类,也可以默认
- tk_priority :定时任务的优先级,主要是在多个定时任务同一时间执行时,执行顺序的优先级
9. ph_run-定时任务的执行
select * from ph_run order by run_id desc limit 1;run_id        83
run_task_id   48
run_task_seq  8
run_retcode   0
run_time      2025-10-30 22:12:00
run_duration  0.001638768269
run_ztime     1761833135
run_btime     1761833135
run_mttime    1761833520
- run_id:执行生成的id,只代表执行顺序
- run_task_id:关联ph_task的task_id,代表执行的那个任务
- run_task_seq:该任务执行的编号
- run_retcode:用户定义的spl例程返回的信息
- run_time:是什么时候执行的,执行时间
- run_duration:执行耗费的时间
10. ph_group-关于定时任务组的信息
select * from ph_group order by group_id desc limit 1;group_id           13
group_name         trx
group_description  trx user task
- group_id:group组的id
- group_name:group组的名称
- group_description:组的注释
