补充点基础知识:
1.oracle的输出语句是SQL>exec dbms_output.put_line('aaaa');
此语句写在存储过程中把exec去掉就不报错了。
oracle实现每天定时执行一个计划任务
创建测试表
SQL> create table a(a date);
表已创建。
创建一个自定义过程
SQL> create or replace procedure test as
2 begin
3 insert into a values(sysdate);
4 end;
5 /
过程已创建。
创建JOB
SQL> variable job1 number;
SQL>
SQL> begin
2 dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440'); --每天1440分钟,即一分钟运行test过程一次
3 end;
4 /
PL/SQL 过程已成功完成。
运行JOB
SQL> begin
2 dbms_job.run(:job1);
3 end;
4 /
PL/SQL 过程已成功完成。
SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 时间 from a;
时间
-------------------
2001/01/07 23:51:21
2001/01/07 23:52:22
2001/01/07 23:53:24
删除JOB
SQL> begin
2 dbms_job.remove(:job1);
3 end;
4 /
PL/SQL 过程已成功完成。
select job,to_char(next_date,'yyyy-mm-dd hh24:mi:ss') from all_jobs;
----------job的使用:
DBMS_JOB.SUBMIT(:jobno,//job号
'your_procedure;',//要执行的过程
trunc(sysdate)+1/24,//下次执行时间
'trunc(sysdate)+1/24+1'//每次间隔时间
);
删除job:dbms_job.remove(jobno);
修改要执行的操作:job:dbms_job.what(jobno,what);
修改下次执行时间:dbms_job.next_date(job,next_date);
修改间隔时间:dbms_job.interval(job,interval);
停止job:dbms.broken(job,broken,nextdate);
启动job:dbms_job.run(jobno);
例子:
VARIABLE jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,
'Procdemo;',//Procdemo为过程名称
SYSDATE, 'SYSDATE + 1/720');
commit;
end;
注意:修改job_queue_processes的值(保证其不为0否则JOB不自动运行)
查看
SQL> show parameter job
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 10
修改
alter system set job_queue_processes=10
不需要重新启动数据库就能生效,
系统自动修改init.ora文件
1)、 每分钟执行
Interval => TRUNC(sysdate,'mi') + 1 / (24*60)
2)、 每天定时执行
例如:每天的凌晨2点执行
Interval => TRUNC(sysdate) + 1 +2 / (24)
3)、 每周定时执行
例如:每周一凌晨2点执行
Interval => TRUNC(next_day(sysdate,2))+2/24 --星期一,一周的第二天
4)、 每月定时执行
例如:每月1日凌晨2点执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24
5)、 每季度定时执行
例如每季度的第一天凌晨2点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24
6)、 每半年定时执行
例如:每年7月1日和1月1日凌晨2点
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24
7)、 每年定时执行
例如:每年1月1日凌晨2点执行
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24
分享到:
相关推荐
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的时候老是创建定时任务失败,这里提供一个实例
。。。
。。。
。。。
Oracle 定时删除数据 并释放空间 ,创建存储过程并使用job完成。