Welcome to the Beyond Blog

John's Blog

This is my blog of various topics, from things that I think might be useful to others, to things that I just find interesting personally. If you have any comments or questions on any of my posts then please do ask - any positive contribution is very much welcomed.




The views expressed in this blog and completely my own and do not reflect those of Beyond Systems Ltd. All content is provided for informational purposes only, and you are solely responsible for how you use this on your own or others systems. We accept no liability for any losses or damages caused.
2 minutes reading time (433 words)

Scheduling Concurrent Programs to Run Between Specific Times of the Day

I've seen this question come up a few times on the Oracle Community Forums recently, so I thought I'd write a quick blog post about it. The question is along the lines of "How can I schedule a concurrent program to run every X minutes between Y o'clock and Z o'clock each day?".

For this example, we'll assume we have a program "Active Users" that we wish to run every 20 minutes between the hours of 09:00 and 17:30, Monday to Friday.

First we need to define a new work shift to match our timing requirements. This can be accessed from System Administrator responsibility, Concurrent > Manager > Workshifts.

Work Shifts

Next we define the new manager via Concurrent > Manager > Define.

Manager Definition

We then define the work shift that we just created against this new manager along with the number of concurrent processes limit for that window. Note that you can define combinations of work shifts to achieve more complex scheduling, however we will keep it simple for this example. Define the sleep seconds as you see fit (note a small value will get picked up quicker, but adds additional overhead to the system).

Manager Schedule

We then need to include our "Active Users" concurrent program on this manager, and exclude it from the standard manager using the Specialization Rules.

Working Hours ManagerStandard Manager
Manager Rules 1Manager Rules 2

Finally we activate the new manager using Concurrent > Manager > Administer

Manager Activation

... and we also restart the Standard Manager from the same screen.

When scheduling our request we now simply choose to run periodically on a 20 minute schedule (ignore the warning about no end date).

Program Schedule

We see that the program runs as expected during the work hours.

Running Program

Running the following script we can see that the new manager has picked up the program.

select q.concurrent_queue_name
  from fnd_concurrent_requests r
  join fnd_concurrent_processes p on p.concurrent_process_id = r.controlling_manager
  join fnd_concurrent_queues q on q.concurrent_queue_id = p.concurrent_queue_id
 where r.request_id = 10619012;
 
 
CONCURRENT_QUEUE_NAME         
------------------------------
WORK_HOURS                    

When we get outside the work shift that we defined against the manager, the request goes into "Inactive - No Manager" and will wait in that status until we're back within the manager work shift window, at which time it will start running automatically again until the end of the window.

Running Program

Clearly it's not sensible to create a new manager for every individual program you wish to run in this style, so it's advisable to create your manager somewhat generically, as we did in the example above. Then any future programs that need to run within working hours can simple be included on this manager and excluded from the standard manager.

Monitoring ODI Load Plan Executions (II)
 

Comments

No comments made yet. Be the first to submit a comment
Already Registered? Login Here
Guest
Saturday, 22 September 2018

Demonstration

Request a demo of our products here

REQUEST DEMO

Contact

Beyond Systems Limited

Barnett House, 53 Fountain Street,

Manchester M2 2AN United Kingdom

 

 

Tel:    +44(0)8450 940 998

Email:  contact@wegobeyond.co.uk