The normal behavior of the scheduler still applies when you use services.
If your job is scheduled to be started while the service is down or disabled is won't be executed, until the Oracle Scheduler does get a change to do so.
That chance is when the service is enabled again.
You could use schedule_limit to prevent the job from executing in such a case.
Say you have a job to start at 14:00, daily
service is down from 13:00 - 15:00
The job will be started ASAP when the service is enabled.
from the docs: <http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm>
In heavily loaded systems, jobs are not always started at their scheduled time. This attribute enables you to have the Scheduler not start a job at all if the delay in starting the job is larger than the interval specified. It can be a value of 1 minute to 99 days. For example, if a job was supposed to start at noon and the schedule limit is set to 60 minutes, the job will not be run if it has not started to run by 1:00 p.m.
If schedule_limit is not specified, the job is executed at some later date as soon as there are resources available to run it. By default, this attribute is set to null, which indicates that the job can be run at any time after its scheduled time. A scheduled job run that is skipped because of this attribute does not count against the number of runs and failures of the job. An entry in the job log will be made to reflect the skipped run.
So in your case, in this situation if you had set your schedule_limit to 10 minutes, the job would have been skipped for the next scheduled execution, the next day's run.
If my jobs is scheduled to run every 10 mins, and my database is down for about 2 hours and schedule_limit is set to 9 mins, after database startup will I have an immediate execution?
Because I don't want the job to execute immediately, but according to the schedule.
If you set your schedule_limit to 1 minute and the Scheduler does not have a chance to start your joub within 1 minute from the original scheduled time, the execution is skipped. So you should set your schedule_limit smaller. But don't forget, on a heavily loaded system it is normal for jobs to start a bit later than scheduled. This is because the Oracle Scheduler tries not to overload a system.