| (1)使用Jobs之创建jobs |
| [君三思] 2009-7-31 |
| 所谓出于job而胜于job,说的就是Oracle10g后的新特性Scheduler啦。在10g环境中,ORACLE建议使用Scheduler替换普通的job,来管理任务的执行。其实,将Scheduler描述成管理job的工具已经太过片面了,10G版本中新增的Scheduler绝不仅仅是创建任务这么简单。。。。
一、使用Jobs所谓JOBS,其实就是Scheduler管理的一个(或多个)任务的执行调度。 1.1 创建Jobs通过DBMS_SCHEDULER包来创建Jobs,是使用其CREATE_JOB过程。在创建Job时,用户可以指定要执行的任务,调度信息(啥时候执行,执行周期,终止日期等)以及其它一些任务相关的属性。CREATE_JOB过程调用还是比较简单的,例如: SQL>BEGIN 2DBMS_SCHEDULER.CREATE_JOB( 3job_name=>¨INSERT_TEST_TBL¨, 4job_type=>¨STORED_PROCEDURE¨, 5job_action=>¨ P_ INSERT INTOTEST ¨, 6start_date=>sysdate, 7repeat_interval=>¨FREQ=DAILY;INTERVAL=1¨); 8END; 9/ PL/SQL 过程已成功完成。事实上,有权限的话,用户也可以创建其它SCHEMA下的JOB,只需要在指定JOB_NAME时,按照schema.job_name的格式即可。注意哟,这种情况下创建的JOB,其CREATED与OWNER有可能并不相同的哟。 当使用CREATE_JOB过程创建JOB时,可指定的参数值很多,只不过多数情况下用户仅指定部分参数即可满足需求。 其中,上例中指定的参数,分别代表的含义如下:
上面的例子创建了一个新的JOB,不过这个JOB与普通JOB不同哟,此时查询USER_JOBS视图是查不到刚刚创建的JOB的信息,因为这个JOB是SCHEDULER管理的JOB。要查询SCHEDULER管理的JOS,应该通过USER_SCHEDULER_JOBS(当然ALL_SCHEDULER_JOBS和DBA_SCHEDULER_JOBS也可以),例如: SQL>selectjob_name,job_type,job_action,to_char(start_date,¨yyyy-mm-ddhh24:mi:ss¨),repeat_interval,enabled,statefromuser_scheduler_jobs; JOB_NAMEJOB_TYPEJOB_ACTIONTO_CHAR(START_DATE,REPEAT_INTERVALENABLSTATE ---------------------------------------------------------------------------------------------------------------------------------- INSERT_TEST_TBLSTORED_PROCEDUREP_INSERTINTOTEST2009-07-2713:46:50FREQ=DAILY;INTERVAL=1FALSEDISABLED不过,细心的盆友可能会发现,JOB虽然成功创建了,但却并未执行,这是怎么回事?其实原因很简单,还记的前面介绍CREATE_JOB过程时提到的ENABLED参数吗,当不显式指定时,该参数的默认值为false,JOB自然不会运行了。如果遇到这类情形,如何修改呢?请继续关注下一节。 |
(1)使用Jobs之创建jobs
最新推荐文章于 2024-08-28 11:12:58 发布
本文介绍了如何使用Oracle 10g的Scheduler特性来替代传统的Jobs进行任务调度。详细讲解了通过DBMS_SCHEDULER包创建任务的方法,并列举了创建任务时所需的参数及其含义。
1915

被折叠的 条评论
为什么被折叠?



