数据仓库服务 GaussDB(DWS)-创建和管理定时任务:定时任务管理

时间:2023-11-01 16:18:44

定时任务管理

  1. 创建测试表:

    1
    CREATE TABLE test(id int, time date);

    当结果显示为如下信息,则表示创建成功。

    1
    CREATE TABLE

  2. 创建自定义存储过程:

    123456789
    CREATE OR REPLACE PROCEDURE PRC_JOB_1()ASN_NUM integer :=1;BEGINFOR I IN 1..1000 LOOPINSERT INTO test VALUES(I,SYSDATE);END LOOP;END;/

    当结果显示为如下信息,则表示创建成功。

    1
    CREATE PROCEDURE

  3. 创建任务:

    • 新创建的任务(未指定job_id)表示每隔1分钟执行一次存储过程PRC_JOB_1。
      12345
      call dbms_job.submit('call public.prc_job_1(); ', sysdate, 'interval ''1 minute''', :a);job-----1(1 row)
    • 指定job_id创建任务
      12345
      call dbms_job.isubmit(2,'call public.prc_job_1(); ', sysdate, 'interval ''1 minute''');isubmit---------(1 row)

  4. 通过视图查看当前用户已创建的任务信息

    12345
    select job,dbname,start_date,last_date,this_date,next_date,broken,status,interval,failures,what from user_jobs;job | dbname |     start_date      |         last_date          |         this_date          |      next_date      | broken | status |      interval       | failures |           what-----+--------+---------------------+----------------------------+----------------------------+---------------------+--------+--------+---------------------+----------+---------------------------1 | gaussdb   | 2017-07-18 11:38:03 | 2017-07-18 13:53:03.607838 | 2017-07-18 13:53:03.607838 | 2017-07-18 13:54:03 | n      | s      | interval '1 minute' |        0 | call public.prc_job_1();(1 row)

  5. 停止任务

    12345
    call dbms_job.broken(1,true);broken--------(1 row)

  6. 启动任务

    12345
    call dbms_job.broken(1,false);broken--------(1 row)

  7. 修改任务属性

    • 修改JOB的Next_date参数信息
      --修改Job1的Next_date为1小时以后开始执行。
      12345
      call dbms_job.next_date(1, sysdate+1.0/24);next_date-----------(1 row)
    • 修改JOB的Interval参数信息
      --修改Job1的Interval为每隔1小时执行一次。
      12345
      call dbms_job.interval(1,'sysdate + 1.0/24');interval----------(1 row)
    • 修改JOB的What参数信息
      --修改Job1的What为执行SQL语句“insert into public.test values(333, sysdate+5);”。
      12345
      call dbms_job.what(1,'insert into public.test values(333, sysdate+5);');what------(1 row)
    • 同时修改JOB的Next_date、Interval、What等多个参数信息
      12345
      call dbms_job.change(1, 'call public.prc_job_1();', sysdate, 'interval ''1 minute''');change--------(1 row)

  8. 删除JOB

    12345
    call dbms_job.remove(1);remove--------(1 row)

  9. JOB的权限控制

    • 当创建一个JOB时,该JOB会和创建该JOB的数据库和用户绑定(即:pg_job系统视图新增的JOB记录中的dbname和log_user)。
    • 如果当前用户是DBA用户、系统管理员、该JOB的创建用户(即:pg_job中的log_user),那么该用户有权限通过高级包接口remove、change、next_data、what、interval删除或修改JOB的参数信息。否则,会提示当前用户没有权限操作该JOB。
    • 如果当前数据库是该JOB创建所属的数据库(即:为pg_job系统视图中的dbname),那么连接到当前数据库上可以通过高级包接口remove、change、next_data、what、interval删除或修改JOB的参数信息。
    • 当删除JOB所属的数据库(即:为pg_job系统视图中的dbname)时,系统会关联删除该数据库从属的JOB记录。
    • 当删除JOB所属的用户(即:为pg_job系统视图中的log_user)时,系统会关联删除该用户从属的JOB记录。

support.huaweicloud.com/qs-dws/dws_01_1032.html