job在oracle中经常使用,下面简述一下参数job_queue_processes与job的关系。
在9i中,job_queue_processes默认是1,当改为0时,job将不能启动。
10g中,此参数的默认值是10
SQL> show parameter job
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 10
在将此参数改为0的时候,dbms_job创建的job将不能在启动,但DBMS_SCHEDULER创建的job不会受此影响,这些job在视图DBA_SCHEDULER_JOBS可查看。
此参数还有另外一层意思,就是并行执行的job的个数,如果此参数设置是10,那么可以同时运行的job个数的上限就是10,假如此时你已经创建了10个job,并全都开始执行,当再创建新job的时候(且当前时间已经满足可以运行此job的时间了),那么这个job将会排队。
还有另外一种情况:当创建的job需要执行10个小时才能执行完,而此job的时间间隔只有1个小时,那么此job也只能是10个小时执行一次,在上一个job执行完成后,会立刻再次执行此job,以为了能够“尽快赶上”时间安排。如果想将此job停掉,我们通常的做法是编辑job,置为broken状态,可当此job在运行时不会受到任何限制,而像刚才描述的那样,每次需要10个小时的执行时间,而时间间隔仅仅1个小时,即便设置为broken状态,此job也不会有任何反应,在执行完这次之后,还会继续执行。除非drop掉此job,那么在当前执行完任务之后,此job将最终消失,这个过程可以在视图DBA_JOBS_RUNNING中可以查看的到。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10037372/viewspace-663272/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10037372/viewspace-663272/