一.查看oracle数据库中的job
select job,what from user_jobs;
二.删除oracle中的job
execute dbms_job.remove(jobID);
注:jobID即"select job,what from user_jobs"中查询出来的job值。
三.创建job,即DBMS_Jobs
1.下面给出一个样例:
SQL> create table a(a date);
Table created
//创建一个过程procedure
SQL> create or replace procedure test as
2 begin
3 insert into a values(sysdate);
4 end;
5 /
Procedure created
//提交作业
SQL> declare
2 job1 number; //定义一个数字型变量
3 begin
4 dbms_job.submit(job1,'test;',sysdate,'sysdate+1/1440'); //按分钟算一天1440分钟。该语句表示从当前时间开始执行,每隔一分钟执行一次,其中sysdate表示系统当前时间。
5 end;
6 /
PL/SQL procedure successfully completed
job1
---------
4
SQL> commit;
Commit complete
//运行作业
SQL> begin
2 dbms_job.run(4);
3 end;
4 /
PL/SQL procedure successfully completed
//删除作业
SQL> begin
2 dbms_job.remove(4);
3 end;
4 /
PL/SQL procedure successfully completed
SQL> commit;
Commit complete
//job change//修改作业
execute dbms_job.change(186,null,null,'sysdate+3');
execute dbms_job.change(186,'scott.test(update)');
2.下面给出第二个样例:
create or replace procedure backup_table
as
v_year varchar2(20);
begin
select to_char(sysdate,'yyyy-mm') into v_year from dual;
insert into t_backup select * from t_table where to_char(C_WORKTIME,'yyyy-mm')=v_year;
commit;
exception
when others then
rollback;
end;
/
declare
JOB_BACKUP number ;
begin
dbms_job.submit(JOB_BACKUP,
'backup_table;',
to_date('01-07-2012 02:00:00','dd-mm-yyyy hh24:mi:ss'),
'ADD_MONTHS(trunc(sysdate,''yyyy''),6)+2/24'
);
commit;
end;
/
讲解:首先创建了一个backup_table的存储过程,该存储过程是将t_table中的c_worktime字段为当前月的数据备份到t_backup表中;然后创建了一个JOB_BACKUP,该JOB首次执行时间为01-07-2012 02:00:00,以后的每次执行时间为每隔半年执行一次。
四.job的定时执行和时间间隔
interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。
1.每分钟执行
Interval => TRUNC(sysdate,'mi') + 1/ (24*60)
2.每天定时执行
例如:每天的凌晨1点执行
Interval => TRUNC(sysdate) + 1 +1/ (24)
3.每周定时执行
例如:每周一凌晨1点执行
Interval => TRUNC(next_day(sysdate,'星期一'))+1/24
4.每月定时执行
例如:每月1日凌晨1点执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24
5.每季度定时执行
例如每季度的第一天凌晨1点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24
6.每半年定时执行
例如:每年7月1日和1月1日凌晨1点
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24
7.每年定时执行
例如:每年1月1日凌晨1点执行
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24
分享到:
相关推荐
Oracle Job定时任务
ORACLE定时任务不能自动执行的检查修复步聚。 oracle定时任务有时不能自动执行,据网上说可能是某个版本的BUG,一般通过这些步骤就能恢复了。 这是本人结合网络上的知识,解决实际问题时记录的。
Oracle 在10g 版本以前,计划任务用的是DBMS_JOB 包,10g 版本引入DBMS_SCHEDULER ...管理,但DBMS_JOB 包的使用相对比较简单,也基本能够满足定时执行计划任务的需求,故 接下来就先看看DBMS_JOB 包的使用方法。
Oracle JOB 定时任务 定时执行存储过程
plsql创建存储过程并创建job定时任务执行-详细笔记文档总结
oracle存储过程+日期+定时任务Job oracle存储过程+日期+定时任务Job oracle存储过程+日期+定时任务Job
oracle的job定时,henyouyongde ziliao
Oracle定时执行存储过程,讲解非常的详细,千万不要错过哦!
JOB使用 在Oracle中实现后台自动执行的定时操作
在plsql下新建一个sql窗口就可以执行的oracle定时任务。
Oracle中的定时任务是在Oracle系统中是一个非常重要的子系统,运用得当,可以极大的提高我们的系统运行和维护能力。而Oracle数据复制的延迟事务队列管理完全是基于Oracle的队列任务,对其的深刻理解有助于我们更好地...
DBMS JOB包创建ORACLE定时任务
oracle JOB常见的执行时间, 在初学者定义JOB时,对于执行时间往往不知道如何设置. 该文档列举了常见的定义方式.可以由此进行扩展.
oracle 定时任务 oracle 定时任务 oracle 定时任务
oracle中job调度存储过程 触发器 定时更新数据库.rar
oracle job 使用详解: 每天1点执行的oracle JOB样例
-- job 创建 begin dbms_scheduler.create_job ( job_name => 'AGENT_LIQUIDATION_JOB', job_type => 'STORED_PROCEDURE', job_action => 'AGENT_LIQUIDATION.LIQUIDATION', --存储过程名 start_date...
主要介绍的是oracle中的job用法,oracle中定时执行存储过程
oracle job调度存储过程 触发器 定时更新数据库