日期:2014-05-16 浏览次数:20478 次
在Oracle中可以使用JOB来实现一些任务的自动化执行,类似于UNIX操作系统crontab命令的功能。
简单演示一下,供参考。
1.创建表T,包含一个X字段,定义为日期类型,方便后面的定时任务测试。
sec@ora10g> create table t (x date);
Table created.
2.创建存储过程p_insert_into_t,每次执行该存储过程都会向T表中插入一条系统当前时间。
sec@ora10g> create or replace procedure p_insert_into_t
? 2? as
? 3? begin
? 4???? insert into t
? 5???? values (SYSDATE);
? 6? end;
? 7? /
Procedure created.
3.OK,准备就绪,我们来创建一个JOB,这个JOB会每分钟运行一次?需要注意一个细节!
sec@ora10g> variable job_number number;
sec@ora10g> begin
? 2???? DBMS_JOB.submit (:job_number,
? 3????????????????????? 'P_INSERT_INTO_T;',
? 4????????????????????? SYSDATE,
? 5????????????????????? 'sysdate+1/(24*60)');
? 6? end;
? 7? /
PL/SQL procedure successfully completed.
4.我们通过USER_JOBS视图查看一下创建的JOB信息。
sec@ora10g> select job,
? 2???????? log_user,
? 3???????? to_char(last_date,'yyyy-mm-dd hh24:mi:ss') last_date,
? 4???????? to_char(next_date,'yyyy-mm-dd hh24:mi:ss') next_date,
? 5???????? interval,
? 6???????? what
? 7??? from user_jobs
? 8? /
??? JOB LOG_USER LAST_DATE?????????? NEXT_DATE?????????? INTERVAL????????? WHAT
------- -------- ------------------- ------------------- ----------------- ----------------
???? 27 SEC????????????????????????? 2010-01-29 00:34:20 sysdate+1/(24*60) P_INSERT_INTO_T;
细