oracle中定时任务(原帖:http://wanghb0206.blog.163.com/blog/static/22485482006614955350/)

oracle中使用job定时完成任务

1、把init.ora中如下两个参数打开
JOB_QUEUE_INTERVAL=60
JOB_QUEUE_PROCESSES=4
job_queue_keep_connections=true
//位置位于:D:/oracle/admin/alpha/pfile下的init.ora文件内
2、定义job
variable job number;
begin
sys.dbms_job.submit(job => :job, --job编号,唯一标识
what => 'begin --job内容,调用存储过程,以begin和end开头
insert_t2;
end;',
--本次执行完后,下一次执行job时间
next_date => to_date('05-01-2005 10:22:05', 'dd-mm-yyyy hh24:mi:ss'),
--执行条件
interval => 'sysdate+1');
commit;
end;
/
删除job:dbms_job.remove(jobno);
修改job:dbms_job.what(jobno,what);
修改下次执行时间:dbms_job.next_date(job,next_date);
修改间隔时间:dbms_job.interval(job,interval);

 

3、常见的时间函数

30分钟:(sysdate+1)/48
1个小时:(sysdate+1)/24
一天:sysdate+1
一个星期: sysdate+7
每个星期五中午:
NEXT_DAY(TRUNC(SYSDATE),'星期五') + 12/24
一个月:add_months(sysdate,1) --可以为正负数
一年:add_months(sysdate,12)
月份加减:select to_char(add_months(sysdate,-1),'yyyymm') from dual;
日期加减:select to_char(sysdate-1,'yyyymmdd') from dual;

下面是我实现的一个任务定时执行的命令代码:
SQL> var n number;
SQL> var a number;
SQL> begin
2 dbms_job.submit(
:n, 'insert_bi_eoms_order(:a);',
to_date('2006-07-30 02:30:00','yyyy-mm-dd hh24:mi:ss'), 'add_months (sysdate,1)' );
3 commit;
4 end;
5 /

PL/SQL 过程成功完成
n
---------
123

其中提示完成后输出的字符表明,已经成功创建了定时任务,任务号为123,以后可以根据这个任务号对该任务进行修改,删除,运行等操作

n表示创建的任务号,因为存储过程insert_bi_eoms_order有一个输入number参数,所以在创建任务前要声明一个number型的参数,即定义a的作用,否则不能创建成功。
特别注意的是:
存储过程名必须用英文单引号括起来,下次执行时间不用单引号括,执行间隔需要用单引号括起来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值