mpp動態新增和刪除分區的定時任務創建

動態創建分區的存儲過程

CREATE OR REPLACE FUNCTION "spiderman"."prc_job_add_partition"()
  RETURNS "pg_catalog"."void" AS $BODY$ DECLARE 
dateName VARCHAR2(110);
dateEnd VARCHAR2(110);
p_sql VARCHAR2(200);
BEGIN
    select concat('DAY' , TO_CHAR(sysdate + 1, 'YYYYMMDD')) into dateName;
    select TO_CHAR(sysdate + 2, 'YYYYMMDD') into dateEnd;
    dbms_output.put_line (  dateName ) ;
    dbms_output.put_line (  dateEnd ) ;
    p_sql := 'ALTER TABLE public.motorvehicle_first_shoot ADD PARTITION '||dateName||' VALUES LESS THAN (DATE '''||dateEnd||''' )';
    dbms_output.put_line(p_sql);
    execute immediate p_sql;
END$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100


創建定時任務

call dbms_job.submit('call spiderman.prc_job_add_partition(); ', sysdate, 'interval ''1 day''', :a);


動態刪除過期分區的存儲過程


CREATE OR REPLACE FUNCTION spiderman.prc_job_remove_partition()
 RETURNS void
 LANGUAGE plpgsql
 NOT FENCED
AS $$ DECLARE 
dateName VARCHAR2(110);
p_sql VARCHAR2(200);
BEGIN
    select concat('DAY' , TO_CHAR(sysdate - 150, 'YYYYMMDD')) into dateName;
    dbms_output.put_line (  dateName ) ;
    p_sql := 'ALTER TABLE public.motorvehicle_first_shoot DROP PARTITION '||dateName||'';
    dbms_output.put_line(p_sql);
    execute immediate p_sql;
END$$
/

創建定時任務


call dbms_job.submit('call spiderman.prc_job_remove_partition(); ', sysdate, 'interval ''1 day''', :a);

查詢定時任務

select job,dbname,start_date,last_date,this_date,next_date,broken,status,interval,failures,what from user_jobs;


 取消定時任務


call dbms_job.broken(1,true);

查看所有分區


select * from PG_PARTITION;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章