创建job让oracel自动运行存储过程
2015-04-15 10:32
211 查看
通过下面的总结:
1,创建存储过程
2,调用定时器
dbms_job.submit(:job,'proc_test',下次执行时间,时间间隔);
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一个简单例子:
创建测试表
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 /
!!!dbms_job.submit();里面的参数的说明
Oracle中的定时器
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 过程已成功完成。
1,创建存储过程
2,调用定时器
dbms_job.submit(:job,'proc_test',下次执行时间,时间间隔);
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一个简单例子:
创建测试表
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 /
!!!dbms_job.submit();里面的参数的说明
Oracle中的定时器
begin sys.dbms_job.submit(job => :job, what => 'check_err;', next_date => trunc(sysdate)+23/24, interval => 'trunc(next_day(sysdate,''星期五''))+23/24'); commit; end;
其中:job是系统自动产生编号,check_err是自己的一个过程或函数,next_date设置下次执行时间,这里是今天晚上23:00,interval设置时间间隔,多久执行一次,这里是每周的星期五晚上23:00,函数next_day返回日期中包含指定字符的日期,trunc 函数去掉日期里的时间,也就是得到的是某天的00:00,时间是以天为单位的所以要得到某某点某某分,就需要分数:
1、 每分钟执行 Interval => TRUNC(sysdate,’mi’) + 1 / (24*60) 2、 每天定时执行 例如:每天的凌晨2点执行 Interval => TRUNC(sysdate) + 1 +2 / (24) 3、 每周定时执行 例如:每周一凌晨2点执行 Interval => TRUNC(next_day(sysdate,'星期一'))+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'),6)+2/24
-------------------------------------------------------------------------------------------------------------------
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 过程已成功完成。
相关文章推荐
- oracle 创建一个job运行存储过程
- 数据库恢复状态可能导致JOB无法自动运行
- 如何创建基本的高级队列之三:Push 模式(绑定存储过程,自动调用)
- oracle job 没自动运行 JOB_QUEUE_PROCESSES
- 创建存储过程并定义异常, 开始start TRANSACTION; 出现异常自动回滚
- 数据库批量备份存储过程(判断盘符、路径,错误盘符返回,不存在的路径自动创建)
- oracle中建立job定期运行存储过程总结
- oracel 数据库使用plsql(创建表,序列,存储过程,触发器) 查询条件为空
- 创建 序列 存储过程 job
- sql server 脚本创建备份数据库的存储过程及利用前述存储过程自动备份数据库的作业
- android 快捷方式开发(三)通过程序运行时自动创建
- Inno Setup怎样创建一个自动申请管理员身份运行的快捷
- 【翻译自mos文章】job 不能自动运行--这是另外一个mos文章,本文章有13个解决方法
- oracle中建立job定期运行存储过程总结
- sharepoint admin svc must be running in order to create deployment timer job 若要创建计时器作业,必须运行SVC
- 该程序在运行时会创建一个JOB,并且将该自己以JOB后台方式运行,并且可以从前台传递参数到后台JOB
- 用PLSQL DEVELOPER创建自动定时执行JOB
- 数据库批量备份存储过程(判断盘符、路径,错误盘符返回,不存在的路径自动创建)
- 修改Oracle10g、11g系统自动统计Job的运行时间属性
- 利用sql server创建可重复运行的存储过程