How to manage jobs in openGauss 2.1.0

创建测试表

gaussdb@postgres> create table t_job (value TIMESTAMP);
CREATE TABLE

gaussdb@postgres> insert into t_job values(sysdate);
INSERT 0 1

gaussdb@postgres> select * from t_job;
+---------------------+
| value               |
|---------------------|
| 2021-10-09 04:36:20 |
+---------------------+
SELECT 1

创建任务,每一分钟插入一条记录

gaussdb@postgres> select pkg_service.job_submit(null, 'insert into t_job values(sysdate);',sysdate,'sysdate + 1/1440');
+--------------+
| job_submit   |
|--------------|
| 15566        |
+--------------+
SELECT 1

检查JOB运行结果

gaussdb@postgres> select * from t_job;
+---------------------+
| value               |
|---------------------|
| 2021-10-09 04:36:20 |
| 2021-10-09 04:40:54 |
| 2021-10-09 04:41:54 |
| 2021-10-09 04:42:54 |
+---------------------+
SELECT 4

从系统视图中检查JOB运行情况

gaussdb@postgres> select job_id,dbname,start_date,next_run_date,interval,failure_count from pg_job;
+----------+----------+----------------------------+---------------------+------------------+-----------------+
| job_id   | dbname   | start_date                 | next_run_date       | interval         | failure_count   |
|----------+----------+----------------------------+---------------------+------------------+-----------------|
| 15566    | postgres | 2021-10-09 04:40:54.072363 | 2021-10-09 04:56:54 | sysdate + 1/1440 | 0               |
+----------+----------+----------------------------+---------------------+------------------+-----------------+
SELECT 1
Time: 0.089s
gaussdb@postgres> select * from pg_catalog.pg_job_proc pjp where job_id=15566;
+----------+------------------------------------+
| job_id   | what                               |
|----------+------------------------------------|
| 15566    | insert into t_job values(sysdate); |
+----------+------------------------------------+
SELECT 1
Time: 0.089s

修改为2分钟执行一次

gaussdb@postgres> select pkg_service.job_update(15566,null,'sysdate + 2/1440',null);
+--------------+
| job_update   |
|--------------|
|              |
+--------------+
SELECT 1

检查修改情况和运行结果

[gaussdb@postgres> select job_id,interval from pg_job where job_id=15566;
+----------+------------------+
| job_id   | interval         |
|----------+------------------|
| 15566    | sysdate + 2/1440 |
+----------+------------------+
SELECT 1](<gaussdb@postgres%3E select * from t_job;
+---------------------+
| value               |
|---------------------|
| 2021-10-09 04:36:20 |
| 2021-10-09 04:40:54 |
| 2021-10-09 04:41:54 |
| 2021-10-09 04:42:54 |
| 2021-10-09 04:43:54 |
| 2021-10-09 04:44:54 |
| 2021-10-09 04:45:54 |
| 2021-10-09 04:46:54 |
| 2021-10-09 04:47:54 |
| 2021-10-09 04:48:54 |
| 2021-10-09 04:49:54 |
| 2021-10-09 04:50:54 |
| 2021-10-09 04:51:54 |
| 2021-10-09 04:52:54 |
| 2021-10-09 04:53:54 |
| 2021-10-09 04:54:54 |
| 2021-10-09 04:55:54 |
| 2021-10-09 04:56:54 |
| 2021-10-09 04:57:54 |
| 2021-10-09 04:58:54 |
| 2021-10-09 04:59:54 |
| 2021-10-09 05:00:55 |
| 2021-10-09 05:01:56 | <---
| 2021-10-09 05:03:57 | <--- 开始间隔2分钟
+---------------------+
SELECT 24
Time: 0.088s
gaussdb@postgres> select job_id,interval,next_run_date from pg_job where job_id=15566;
+----------+------------------+---------------------+
| job_id   | interval         | next_run_date       |
|----------+------------------+---------------------|
| 15566    | sysdate + 2/1440 | 2021-10-09 05:05:57 |
+----------+------------------+---------------------+
SELECT 1
Time: 0.078s>

禁用和启用任务

禁用和启用都是同样的函数pkg_service.job_finish,传入不同的参数表示是禁用还是启用。

gaussdb@postgres> select pkg_service.job_finish(15566,true,null);
+--------------+
| job_finish   |
|--------------|
|              |
+--------------+
SELECT 1
Time: 0.089s
gaussdb@postgres> select job_id,next_run_date,job_status from pg_job where job_id=15566;
+----------+---------------------+--------------+
| job_id   | next_run_date       | job_status   |
|----------+---------------------+--------------|
| 15566    | 4000-01-01 00:00:00 | d            |
+----------+---------------------+--------------+
SELECT 1
Time: 0.075s
gaussdb@postgres> select pkg_service.job_finish(15566,false,null);
+--------------+
| job_finish   |
|--------------|
|              |
+--------------+
SELECT 1
Time: 0.091s
gaussdb@postgres> select job_id,next_run_date,job_status from pg_job where job_id=15566;
+----------+---------------------+--------------+
| job_id   | next_run_date       | job_status   |
|----------+---------------------+--------------|
| 15566    | 4000-01-01 00:00:00 | s            |
+----------+---------------------+--------------+
SELECT 1
Time: 0.080s

可以看到如果重新启用任务的时候,没有指定下次运行时间,那么下次运行时间会始终保持在4000年,意味着仍然不会启动,所以如果禁用任务之后再重新启动,需要手动显式指定下次运行时间。

gaussdb@postgres> select pkg_service.job_finish(15566,false,sysdate);
+--------------+
| job_finish   |
|--------------|
|              |
+--------------+
SELECT 1
Time: 0.088s
gaussdb@postgres> select job_id,next_run_date,job_status from pg_job where job_id=15566;
+----------+---------------------+--------------+
| job_id   | next_run_date       | job_status   |
|----------+---------------------+--------------|
| 15566    | 2021-10-09 05:16:22 | s            |
+----------+---------------------+--------------+
SELECT 1
Time: 0.086s

删除任务

gaussdb@postgres> select pkg_service.job_cancel(15566);
+--------------+
| job_cancel   |
|--------------|
|              |
+--------------+
SELECT 1
Time: 0.082s
gaussdb@postgres> select job_id,next_run_date,job_status from pg_job where job_id=15566;
+----------+-----------------+--------------+
| job_id   | next_run_date   | job_status   |
|----------+-----------------+--------------|
+----------+-----------------+--------------+
SELECT 0
Time: 0.086s
gaussdb@postgres> select * from pg_catalog.pg_job_proc pjp where job_id=15566;
+----------+--------+
| job_id   | what   |
|----------+--------|
+----------+--------+
SELECT 0
Time: 0.087s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值