简体   繁体   English

如何使用pgagent在Postgres中安排作业的计时

[英]How to schedule timing for a JOB in Postgres using pgagent

I have created a job using pgagent which I have scheduled on every 5 mins for that below is the code: 我已经使用pgagent创建了一个工作,我计划每5分钟执行一次,代码如下:

DO $$
DECLARE
    jid integer;
    scid integer;
BEGIN
-- Creating a new job
INSERT INTO pgagent.pga_job(
    jobjclid, jobname, jobdesc, jobhostagent, jobenabled
) VALUES (
    1::integer, 'refresh_mobile'::text, ''::text, ''::text, true
) RETURNING jobid INTO jid;

-- Steps
-- Inserting a step (jobid: NULL)
INSERT INTO pgagent.pga_jobstep (
    jstjobid, jstname, jstenabled, jstkind,
    jstconnstr, jstdbname, jstonerror,
    jstcode, jstdesc
) VALUES (
    jid, 'refresh_mobile_mv_data'::text, true, 's'::character(1),
    ''::text, 'ICSPGD'::name, 'f'::character(1),
    'SELECT refresh_materialized_views(''mobile'');'::text, 'Please check. Issue occired while refreshing Mobile Data'::text
) ;

-- Schedules
-- Inserting a schedule
INSERT INTO pgagent.pga_schedule(
    jscjobid, jscname, jscdesc, jscenabled,
    jscstart, jscend,    jscminutes, jschours, jscweekdays, jscmonthdays, jscmonths
) VALUES (
    jid, 'minutly'::text, ''::text, true,
    '2017-09-04 03:36:20-07'::timestamp with time zone, '2018-12-31 02:36:20-08'::timestamp with time zone,
    -- Minutes
    ARRAY[false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]::boolean[],
    -- Hours
    ARRAY[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]::boolean[],
    -- Week days
    ARRAY[true, true, true, true, true, true, true]::boolean[],
    -- Month days
    ARRAY[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]::boolean[],
    -- Months
    ARRAY[true, true, true, true, true, true, true, true, true, true, true, true]::boolean[]
) RETURNING jscid INTO scid;
END
$$;

But when I am checking its statistics(in pgadmin) or via query "select * from pgagent.pga_job;" 但是当我检查它的统计信息时(在pgadmin中)或通过查询“从pgagent.pga_job中选择*”; it shows that job are running at an interval of 1 hour. 它表明作业每隔1小时运行一次。

For example: If the last job run time is 2017-10-05 03:05:00.703287-07 , then the next run time it shows : 2017-10-05 04:05:00-07 . 例如:如果上次作业运行时间是2017-10-05 03:05:00.703287-07 ,则下一个运行时间将显示: 2017-10-05 04:05:00-07

Kindly help with the timing parameter. 请帮助计时参数。 I am suppose to run this job on an interval of every 5 mins on a daily basis throughout. 我想每天要每隔5分钟运行一次此作业。

Regards, 问候,

Have you tried something like this? 你尝试过这样的事情吗?

INSERT INTO pgagent.pga_schedule 
(jscid, jscjobid, jscname, jscdesc, jscminutes, jschours, jscweekdays, jscmonthdays, jscmonths, jscenabled, jscstart, jscend)
VALUES(<SchId>, 29, 'minutly', '', '{t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f,t,f,f,f,f}', '{f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f}', '{f,f,f,f,f,f,f}', '{f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f}', '{f,f,f,f,f,f,f,f,f,f,f,f}', true, '2017-10-07 00:00:00', NULL);

Basically, what this insert is doing is marking the minutes 0,5,10,15,20,25,30,35,40,45,50 and 55 for every hour. 基本上,此插入物正在执行的操作是将每小时的分钟数标记为0、5、10、15、20、25、30、35、40、45、50和55。

I don't know why you're creating it using insert statements, since the GUI offers a pretty neat way to schedule jobs. 我不知道为什么要使用insert语句创建它,因为GUI提供了一种很好的调度作业的方法。 The same configuration can be done using the GUI like this: 可以使用GUI进行相同的配置,如下所示:

在此处输入图片说明

I hope it helps :-) 希望对您有所帮助:-)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM