oracleplsqloracle11gdbms-scheduler

How to schedule Oracle DBMS Jobs in a window


I want to create an Oracle DBMS Job that runs every week day (not on weekends) from 09:00 to 20:00 every 10 min. I wonder if I can do that in the FREQ parameter of the job definition or I have to create a New Maintenance Window.

It seems that with the solution proposed, the job runs at 9 and 20 only, and after first execution, when I run this query

select owner, job_name, next_run_date 
from dba_scheduler_jobs 
where JOB_NAME = 'GET_INVOICES_JOB';

I got 09/10/17 20:01:27,000000000 EUROPE/MADRID

'freq=minutely; interval=10; byhour=9,20; byday=MON,TUE,WED,THU,FRI; exclude=Company_Holidays; bysetpos=-1'

Solution

  • You may use this:

    begin
    dbms_scheduler.create_job (
       job_name           =>  'jb_en_lopes',
       job_type           =>  'STORED_PROCEDURE',
       job_action         =>  'pr_en_lopes',
       start_date         =>  '09-oct-2017 09:00:00 am',
       repeat_interval    =>  'freq=minutely; interval=10; byhour=9,10,11,12,13,14,15,16,17,18,19,20; byday=MON,TUE,WED,THU,FRI;',
       enabled            =>  true);
    end;
    

    When this scheduler in charge I get the results below :

    select * 
      from dba_scheduler_job_log l
     where l.job_name = 'JB_EN_LOPES'
     order by l.log_date desc;
    
     LOG_ID LOG_DATE                            OPERATION   STATUS
    
    1051594 10-OCT-17 09.59.01.197420 AM +03:00    RUN      SUCCEEDED  
    1051592 10-OCT-17 09.58.02.229724 AM +03:00    RUN      SUCCEEDED  
    1051590 10-OCT-17 09.57.03.177907 AM +03:00    RUN      SUCCEEDED  
    1051588 10-OCT-17 09.56.01.197341 AM +03:00    RUN      SUCCEEDED
    

    Where :

    select owner, job_name, next_run_date                                  
      from dba_scheduler_jobs                                               
     where JOB_NAME = 'JB_EN_LOPES'; 
    
     OWNER    JOB_NAME       NEXT_RUN_DATE
    
     myschema JB_EN_LOPES   10-OCT-17 08.00.00.194958 PM +03:00
    

    Update :

    If you have no access to dba_ views, then consider to replace those prefixes with user_, and remove owner column from the select list for the last query as

    select job_name, next_run_date                                  
      from user_scheduler_jobs                                               
     where JOB_NAME = 'JB_EN_LOPES';