1 首先查看

SQL> show parameter job

NAME
TYPE
VALUE
------------------------------------ -----------
------------------------------
job_queue_processes
integer 10

如果值是 0
需要修改(如果为0则无法运行job,此值为允许同时运行的job数量)

alter system set job_queue_processes
=10; --或者其他值

2 一个简单例子:
  
  创建测试表
  SQL> create table TEST(a
date);
  
  表已创建。
  
  创建一个自定义过程
  SQL> create or replace
procedure MYPROC as
   2 begin
   3 insert into TEST
values(sysdate);
   4 end;
   5 /
  
  过程已创建。
  
  创建JOB
  SQL>
variable job1 number;
  SQL>
  SQL>
begin
   2 dbms_job.submit(:job1,'MYPROC;',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
TEST;
  
  时间
  -------------------
  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
过程已成功完成。
Sql> print
:n;
系统打印此任务的编号,例如结果为300。
如上,我们创建了一个每隔1分钟执行一次的任务号为300的任务。可以通过Oracle提供的数据字典user_jobs察看该任务的执行情况:
sql>
select job,next_date,next_sec,failures,broken from user_jobs;
执行结果如下:
job
next_date next_sec failures broken
300 2000/10/10 11:45:15 0
N
这表示任务号为300的任务,下一次将在2000/10/10
11:45:15执行,此任务的执行失败记录为0次。注意:当执行job出现错误时,Oracle将其记录在日志里,失败次数每次自动加1。当执行失败次数达到16时,Oracle就将该job标志为broken。此后,Oracle不再继续执行它,直到用户调用过程dbms_job.broken,重新设置为not
broken,或强制调用dbms_job.run来重新执行它。
除了以上我们讨论的submit存储过程之外,Oracle还提供了其他许多存储过程来操作任务。例如:dbms_job.change

dbms_job.what、dbms_job.interval可以用来修改提交的任务。要想删除该任务,只需运行dbms_job.remove(n)即可,其中n为任务号。

3
上面的例子没有涉及到存储过程带参数的问题,如果带参数假设为
MYPROC( ina
IN
VARCHAR2,
------------------以下为必须输出参数组---------------------------------
outa
OUT NUMBER,
outb OUT VARCHAR2)


在建立job的代码中
创建JOB
  begin
sys.dbms_job.submit(job =>
:job,

what =>
'
declare

outa
number;
--定义输出变量
outb
varchar2(40);
begin
MYPROC(''输入'',outa
=>outa ,outb =>outb
);
end;',

next_date => to_date('10-10-2006 08:48:34', 'dd-mm-yyyy
hh24:mi:ss'),

interval => 'sysdate+1');
commit;
end;
/

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1399765

本文来自:新浪博客http://blog.sina.com.cn/s/blog_586f1baf01000bww.html

最新文章

  1. Java 序列化Serializable
  2. 03_Java面向对象特征: 封装性
  3. memcache 简单入门应用
  4. Sqli-labs less 28a
  5. LCS最长公共子序列HDU1159
  6. ucenter 通信原理
  7. Nginx模块开发入门(转)
  8. ASP.NET5 Beta8
  9. Linux 修改用户名
  10. redhat 6.5 安装和配置zabbix客户端
  11. CSS学习笔记_day1
  12. MySQL(五)汇总和分组数据
  13. Stack Overflow:研究发现访问PHP和 Android的流量更可能来自低收入国家
  14. spring cloud: zuul(二): zuul的serviceId/service-id配置(微网关)
  15. Java 获取盘符及分类
  16. [css]单/多行居中&字体设置
  17. Rhythmk 一步一步学 JAVA (21) JAVA 多线程
  18. iScroll框架解析——Android 设备页面内 div(容器,非页面)overflow:scroll; 失效解决(转)
  19. Weka java.lang.reflect.InvocationTargetException
  20. 兄弟连新版Linux视频教程

热门文章

  1. 洛谷P5341 [TJOI2019]甲苯先生和大中锋的字符串
  2. Template-Thymeleaf:Thymeleaf
  3. Android之LinearLayout线性布局
  4. 条件渲染v-if
  5. 23-css补充
  6. 测试List对象排序
  7. 嘴巴题7 BZOJ1426: 收集邮票
  8. 获取计算机以及本机信息API
  9. Css if hack条件语法
  10. LUOGU P4195 Spoj3105 Mod