使用 dbms_scheduler 定期删除大表中的历史记录

Oracle 10.2.0.4   ,   RAC 

 

CREATE OR REPLACE PROCEDURE  WM71.DEL_HIS_BIZDOCCONTENT(p_status OUT  VARCHAR2)
AS
   BEGIN 

delete from  wm71.bizdoccontent where
  docid  in
   ( select docid  from  wm53.bizdoc 
          where doctimestamp < sysdate -40
               and doctimestamp >= sysdate -41) ; 

commit ; 

delete from  wm71.bizdoccontent where
   docid  in
     ( select docid  from  wm53.bizdoc 
          where doctimestamp < sysdate -41
                 and doctimestamp >= sysdate -42) ; 
 
commit ; 

     p_status  := SQLCODE ; 

   EXCEPTION
          WHEN OTHERS
   THEN
        p_status := SQLCODE || 'EXCEPTION OCCURED IN WM71.DEL_HIS_BIZDOCCONTENT PROCEDURE' ||

SUBSTR(SQLERRM,1,128); 
        -- DBMS_OUTPUT.PUT('EXCEPTION OCCURED IN WM71.DEL_HIS_BIZDOCCONTENT' || SQLCODE ||

SUBSTR(SQLERRM,1,400));
   END;
/

 

 

 

begin
 dbms_scheduler.create_job('DEL71_HIS_BIZDOCCONTENT_JOB',
   job_action=> 'WM71.DEL_HIS_BIZDOCCONTENT'  ,
  start_date => sysdate ,  
   repeat_interval => 'FREQ=DAILY; BYHOUR=07,08 ;  BYMINUTE=0,30',
   job_type=>'STORED_PROCEDURE', enabled=>TRUE);
 end;
/


 

请使用浏览器的分享功能分享到微信等