One of the most common implementation tasks for Oracle Utilities products, whether you are on-premises or enjoying the benefits of the Oracle Utilities SaaS Cloud, batch jobs need to be managed and scheduled appropriately.
This applies regardless of which scheduling product you are using, whether this is the inbuilt scheduler in the Oracle Utilities SaaS Cloud Service, DBMS Scheduler or an external third-party scheduler.
Here are some responsibilities the batch scheduler should consider:
- Executing Individual batch jobs. At the raw level the scheduler becomes the entity that initiates the execution of batch jobs under their management. This involves liaising with the batch architecture to initiate, wait for the execution to complete and understand the status of the job (e.g. successful or otherwise).
- Managing dependencies. One of the key pieces of functionality a scheduler brings to the implementation is managing the dependencies between jobs. Two individual jobs may be dependent on each other due to data reasons (the data from one job is fed into the other), status (the success or failure of one job initiates another) or common resource usage (one job shares some critical resource with another and to avoid contention you make them dependent). The scheduler defines the relationships between jobs and is responsible to adhering to dependencies.
- Calendaring. Once the execution of the jobs and the dependencies are implemented, when to execute is the next challenge. Schedulers use calendaring capabilities to consider business times, business working days and public holidays when scheduling groups of jobs.
- Execution resource management. One of the less common aspects of scheduling is resource management. Scheduling lot of processes without regard to some sort of capacity or relationships can flood resources and increase contention. These factors can adversely influence the performance of individual processes. Schedulers may take these factors into consideration and even delay the execution of individual processes to ensure efficient processing. Remember you have some limitation (be it thread limits, CPU or optimal disk IO rates) that should be taken into account for optimal execution.
- Logically grouping individual jobs. Once you have groups of jobs related by time and dependency the scheduler can logically group these jobs for reporting or focused management of large numbers of jobs.
To be effective when using a schedule there are several considerations and techniques and processes to help optimizing the use of the scheduler and take full advantage of the available capabilities.
- Remove unused or unnecessary jobs. If you are using a provided schedule from your partner or via an accelerator, not all the jobs will apply to your implementation. Not all functionality is used by all implementations. Therefore, remove jobs not needed and adjust dependencies accordingly. For example:
- Identify business critical processes. In every schedule there are a handful of jobs that are business critical. They will be the focus of optimization as their efficient execution will help ensure success.
- Examine each dependency using several dimensions. Examine each individual dependency to ascertain whether the relationship is necessary for data, status or resource purposes. Unnecessary dependencies may artificially lengthen the overall duration of a schedule. If the dependency is not needed, then adjust the dependencies accordingly including running the jobs in parallel or in a different location in the schedule.
- Use Parallel Processing effectively. In adjusting dependencies one of the techniques is to consider running more jobs in parallel. Whilst, this is valid, running too much at the same time can be inefficient from a resource perspective. Balance running jobs in parallel with the resource usage for each job to ensure the jobs run within your resource constraints.
- Adjust dependencies for critical processes. The goal of scheduling is not only to run each job but run them efficiently. The key to success is therefore to ensure that the critical jobs are run with enough resources and as early as possible to improve overall efficiency. This means adjust less critical jobs to be out of the way of the critical jobs, either after the critical jobs or in parallel to other less critical jobs to help get them complete before the critical job. Dependencies that are necessary still need to be respected.
Using the above techniques will help optimize your schedule so that they run within expected time frames and utilize the available resources efficiently.
For more information about batch scheduling refer to the online help supplied with your Oracle Utilities product/Oracle Utilities SaaS Cloud Service, Batch Best Practices (Doc Id: 836362.1) and Batch Scheduler Integration (Doc Id: 2138193.1) whitepapers available from My Oracle Support.
Oracle Utilities, including Opower, partners with the world's hardest working electric, water and natural gas companies to empower, enhance and enable your every single day. From cloud-native products and better grid management tools to support for every single step of your customer's journey, we have the answer. Learn more at oracle.com/utilities. Get specific product information as quick as clicking right here.