日期:2014-05-16  浏览次数:20537 次

如何在Oracle中管理计划任务(JOB)

ORACLE 数据库中,执行计划任务的工具通常都是DBMS_JOB 包。这个包使用简单,历史悠久,目前还在广泛使用中。坦率地讲,这个包的功能满足了绝大部分应用的计划任务运行需要,所以生命力才这么强。

但是,我们这里还是要说一下它的不足之处。

(miki西游 @mikixiyou 文档:原文链接: http://mikixiyou.iteye.com/blog/1559145 )

DBMS_JOB 使用中,我们需要知道每一次JOB 执行的时间,用于判断该JOB 调用的存储过程执行时间。这里你会说,这个在存储过程里也可以实现的,在存储过程中,执行前后加个时间戳记录到日志表中就可以实现。

是的。以前我们在处理这类需求时也是这么做的。

但从ORACLE 10.1 版本开始,ORACLE 开发了一个新的包DBMS_SCHEDULER 。这个包挺复杂的,以至于我在初次学习之后,就没再去用它了。功能太强大了,其实很多我们不需要的。

我们就有这个需求,看看DBMS_SCHEDULER 是如何解决的。

SQLPLUS 中,使用DBMS_SCHEDULER.CREATE_JOB 创建计划任务,用于调度一个存储过程。

存储过程很简单,我为这个测试而创建的,就是向一张表里插入数据。

?

?

CREATE TABLE T1 AS SELECT SYSDATE AS AA FROM DUAL;