首页 > 数据库 > Oracle > oracle job
经常会有一些定时任务需要对oracle数据库进行操作,这个处理常见的有两种办法:
1、unix/linux的定时任务,写一个shell或者perl等程序
2、job
以前由于开发规范的要求,大多是按照第一种来写,实际上我觉得job更合适。因为如果oracle数据库服务器的操作系统是windows的话,按照第一种实现方式的话可能需要网络操作,如果网络中断,则定时任务无法处理。
并且oracle可以对文件系统进行操作,可以通过包来写文件,所以job是一个能够完成绝大部分的操作。
今天又用到了,就简单的记录了一下,以后可以参考。
[@more@]variable job number;
begin
sys.dbms_job.submit(job => :job,
what => 'begin your_sp_name; end;',
next_date => to_date('26-05-2006 03:17:38', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate+1');
commit;
end;
/
上面的这段代码执行过后,就可以看到生成的job的jobid,其中your_sp_name是你的存储过程的名称,如果带参数,需要将参数传入。
然后使用
select next_date,what,interval,broken from user_jobs
就可以看到当前用户下的所有job的下次执行时间,执行的内容,时间间隔,job状态等信息。
当然,使用shell也很简单
sqlplus -i -n username/password@sidname<
your_sp_name;
EOF
把上面的代码另存为cronOracleJob.sh
chmod +x cronOracleJob.sh
加入crontab即可(不同的系统可能需要在前面加上#!/sh的路径)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/47869/viewspace-838063/ ,如需转载,请注明出处,否则将追究法律责任。