Scheduling Oracle jobs using DBMS_JOB



-- scheduling at 01:00 am


declare

jobno number;
begin
dbms_job.submit(jobno, '<procedurename>;',TRUNC(sysdate)+1/24,'TRUNC(sysdate+1)+1/24');
end;

-- every 2 hours

declare
jobno number;
begin
dbms_job.submit(jobno, 'track_east_ftth_faults;',TRUNC(SYSDATE+(2/24),'HH'),'TRUNC(SYSDATE+(2/24),''HH'')');
end;
/

-- every 1 hours based on minutes

declare
 jobno number;
begin
 dbms_job.submit(jobno, 'track_east_ll_faults;',TRUNC(SYSDATE,'mi')+60/1440,'TRUNC(SYSDATE,''mi'')+60/1440');
end;

exec dbms_job.remove(1340)

-- every 5 minutes

declare
jobno number;
begin
dbms_job.submit(jobno, 'DBMS_MVIEW.REFRESH(''WIDGET_FM_PENIDING_ORDERS'',''C'') ;',sysdate,'TRUNC(SYSDATE,''mi'')+5/1440');
end;
/

declare
jobno number;
begin
dbms_job.submit(jobno, 'KILL_SNIPED;',sysdate,'TRUNC(SYSDATE,''mi'')+5/1440');
end;
/

-- 1st of every month

declare
 jobno number;
begin
 dbms_job.submit(jobno, 'bbc_monthly_kpi;',sysdate,'add_months(trunc(sysdate, ''mm''), 1) + 1/24');
end;
/

dbms_job.submit(
what=>'begin someprocedure; end;',
next_date=>sysdate,
interval=>'add_months(trunc(sysdate, ''mm''), 1) + 7/24');


-- every 15 min  based on minutes

declare
 jobno number;
begin
 dbms_job.submit(jobno, 'CUSTOMER_SMS;',TRUNC(SYSDATE,'mi')+60/1440,'TRUNC(SYSDATE,''mi'')+15/1440');
end;


-- every day  -- daily

DECLARE
  my_job NUMBER;
BEGIN
  dbms_job.submit(job => my_job, 
    what => 'DIR_DAILY_BBC_STATS_SP;',
 
    INTERVAL => 'TRUNC(SYSDATE + 1)'
    );
END;

Every day at 12:00 midnight 'TRUNC(SYSDATE + 1)' 
Every day at 8:00 a.m. 'TRUNC(SYSDATE + 1) + 8/24' 
Every Tuesday at 12:00 noon 'NEXT_DAY(TRUNC(SYSDATE ), "TUESDAY" ) + 12/24' 
First day of the month at midnight 'TRUNC(LAST_DAY(SYSDATE ) + 1)' 
Last day of the quarter at 11:00 p.m. 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) - 1/24' 
Every Monday, Wednesday, and Friday at 9:00 a.m. 'NEXT_DAY(SYSDATE, "FRIDAY") ) ) + 9/24' 
Execute daily 'SYSDATE + 1' 
Execute hourly 'SYSDATE + 1/24' 
Execute every 10 minutes 'SYSDATE + 10/1440' 
Execute every 30 seconds 'SYSDATE + 30/86400' 
Execute every 7 days 'SYSDATE + 7' 



 
 

Post a Comment

And that's all there is to it!

If anyone has any other questions or requests for future How To posts, you can either ask them in the comments or email me. Please don't feel shy at all!

I'm certainly not an expert, but I'll try my hardest to explain what I do know and research what I don't know.

Previous Post Next Post