DBMS_JOB系统包是Oracle“任务队列”子系统的API编程接口。
设置初始化参数来进行的。下面就是该参数:
JOB_QUEUE_PROCESSES = n
其中,n可以是0到36之间的任何一个数。
名称 |
类型 |
描述 |
DBMS_JOB.ISUBMIT |
过程 |
提交一个新任务,用户指定一个任务号 |
DBMS_JOB.SUBMIT |
过程 |
提交一个新任务,系统指定一个任务号 |
DBMS_JOB.REMOVE |
过程 |
从队列中删除一个已经存在的任务 |
DBMS_JOB.CHANGE |
过程 |
更改用户设定的任务参数 |
DBMS_JOB.WHAT |
过程 |
更改PL/SQL任务定义 |
DBMS_JOB.NEXT_DATE |
过程 |
更改任务下一次运行时间 |
DBMS_JOB.INTERVAL |
过程 |
更改任务运行的时间间隔 |
DBMS_JOB.BROKEN |
过程 |
将任务挂起,不让其重复运行 |
DBMS_JOB.RUN |
过程 |
在当前会话中立即执行任务 |
DBMS_JOB.USER_EXPORT |
过程 |
创建文字字符串,用于重新创建一个任务 |
DBMS_JOB包参数
名称 |
类型 |
注释 |
Job |
BINARY_INTEGER |
任务的唯一识别号 |
What |
VARCHAR2 |
作为任务执行的PL/SQL代码 |
Next_date |
VARCHAR2 |
任务下一次运行的时间 |
Interval |
VARCHAR2 |
日期表达式,用来计算下一次任务运行的时间 |
任务重复运行间隔和间隔设计算法
描述 |
Interval参数值 |
每天运行一次 |
'SYSDATE + 1' |
每小时运行一次 |
'SYSDATE + 1/24' |
每10分钟运行一次 |
'SYSDATE + 10/(60*24)' |
每30秒运行一次 |
'SYSDATE + 30/(60*24*60)' |
每隔一星期运行一次 |
'SYSDATE + 7' |
不再运行该任务并删除它 |
NULL |
定时到特定日期或时间的任务例子
描述 |
INTERVAL参数值 |
每天午夜12点 |
'TRUNC(SYSDATE + 1)' |
每天早上8点30分 |
'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)' |
每星期二中午12点 |
'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24' |
每个月第一天的午夜12点 |
'TRUNC(LAST_DAY(SYSDATE ) + 1)' |
每个季度最后一天的晚上11点 |
'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24' |
每星期六和日早上6点10分 |
'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)' |
例子:
create or replace procedure joblog_deleter is
daynum number:= 7 ;
begin
delete from pamirs_schedule_jobblog where trunc(sysdate-exe_time)>daynum ;
commit ;
end joblog_deleter;
/
variable nob number ;
begin
sys.dbms_job.submit(job =>:nob,
what => 'JOBLOG_DELETER;',
next_date => trunc(sysdate)+23/24,
interval => 'sysdate+7');
commit;
end;
/
查看任务: select * from user_jobs
删除任务:
begin
2 dbms_job.remove(88); --删除任务
3 end;
4 /
运行任务:
dbms_job.run(nob); --删除任务
分享到:
相关推荐
ORACLE定时任务不能自动执行的检查修复步聚。 oracle定时任务有时不能自动执行,据网上说可能是某个版本的BUG,一般通过这些步骤就能恢复了。 这是本人结合网络上的知识,解决实际问题时记录的。
oracle定时任务.txt
-- job 创建 begin dbms_scheduler.create_job ( job_name => 'AGENT_LIQUIDATION_JOB', ... job_type => 'STORED_PROCEDURE', ... job_action => 'AGENT_LIQUIDATION.LIQUIDATION', --存储过程名 ...
oracle 定时任务 oracle 定时任务 oracle 定时任务
Oracle中的定时任务是在Oracle系统中是一个非常重要的子系统,运用得当,可以极大的提高我们的系统运行和维护能力。而Oracle数据复制的延迟事务队列管理完全是基于Oracle的队列任务,对其的深刻理解有助于我们更好地...
在plsql下新建一个sql窗口就可以执行的oracle定时任务。
oracle定时任务机制及用法oracle定时任务机制及用法 oracle定时任务机制及用法oracle定时任务机制及用法
NULL 博文链接:https://xiaosheng12345.iteye.com/blog/1984408
job的界面配置管理工具,为你更方便快捷定制定时任务,提高维护者的时间成本,更加安全实用
NULL 博文链接:https://huxiuliang.iteye.com/blog/563180
DBMS JOB包创建ORACLE定时任务
一个Oracle定时任务,过程全部在Oracle817下通过测试。
Oracle 在10g 版本以前,计划任务用的是DBMS_JOB 包,10g 版本引入DBMS_SCHEDULER 来替代先前的DBMS_JOB,在功能方面,它比DBMS_JOB 提供了更强大的功能和更灵活的机制 管理,但DBMS_JOB 包的使用相对比较简单,也基本...
定时将solaris系统下,oracle数据备份到远程ftp服务器上。
Oracle Job定时任务
。。。
。。。
。。。
Oracle 定时删除数据 并释放空间 ,创建存储过程并使用job完成。