首 页IT知识库翔宇问吧收藏内容
当前位置:翔宇亭IT乐园IT知识库数据库Oracle

oracle中job的使用

减小字体 增大字体 作者:不详  来源:华军资讯  发布时间:2010-02-10 21:02:00

  9、User_Export()过程返回一个命令,此命令用来安排一个存在的工作以便此工作能重新提交。

  此程序有两个参数:job与my_call。

  PROCEDURE User_Export(job    IN binary_ineger,
  my_call  IN OUT varchar2)
  job参数标识一个安排了的工作。my_call参数包含在它的当前状态重新提交此工作所需要的正文。

  10、What()过程应许在工作执行时重新设置此正在运行的命令。这个过程接收两个参数:job与what。

  PROCEDURE What (job IN binary_ineger,
  What IN OUT varchar2)
  job参数标识一个存在的工作。what参数指示将被执行的新的PL/SQL代码。

三、查看相关job信息

  1、相关视图

  dba_jobs
  all_jobs
  user_jobs
  dba_jobs_running 包含正在运行job相关信息

  2、查看相关信息

  SQL>SELECT JOB, NEXT_DATE, NEXT_SEC, FAILURES, BROKEN
  SQL>FROM DBA_JOBS;
  JOB NEXT_DATE NEXT_SEC FAILURES B
  ------- --------- -------- -------- -
  9125 01-JUN-01 00:00:00 4 N
  14144 24-OCT-01 16:35:35 0 N
  9127 01-JUN-01 00:00:00 16 Y
  3 rows selected.
  正在运行的JOB相关信息

  SELECT SID, r.JOB, LOG_USER, r.THIS_DATE, r.THIS_SEC
  FROM DBA_JOBS_RUNNING r, DBA_JOBS j
  WHERE r.JOB = j.JOB;
  SID JOB LOG_USER THIS_DATE THIS_SEC
  ----- ---------- ------------- --------- --------
  12 14144 HR 24-OCT-94 17:21:24
  25 8536 QS 24-OCT-94 16:45:12
  2 rows selected.
  JOB QUEUE LOCK相关信息

  SELECT SID, TYPE, ID1, ID2
  FROM V$LOCK
  WHERE TYPE = 'JQ';
  SID TY ID1 ID2
  --------- -- --------- ---------
  12 JQ 0 14144
  1 row selected.

四、简单例子

  创建测试表

  SQL> create table myjob(a date);
  表已创建。

  创建一个自定义过程

  SQL> create or replace Procedure prc_myjob as
  2 begin
  3 insert into myjob values(sysdate);
  4 end;
  5 /
  过程已创建。

  创建JOB

  SQL> variable job1 number;
  SQL> begin
  2 dbms_job.submit(:job1,'prc_myjob;',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);--如果知道job号,可以直接使用,如dbms_job.remove(1);
  3 end;
  4 /
  PL/SQL 过程已成功完成。

  上面的是每间隔多久执行一次指定的job,那么如何设置定时定点job呢,如设置2月5号晚8点执行?

  创建JOB

  SQL> variable job1 number;
  SQL> begin
  2 dbms_job.submit(:job1,'prc_myjob;',sysdate,'ADD_MONTHS(TRUNC(SYSDATE,''MM''),1)+4+20/24');
  3 end;
  4 /
  PL/SQL 过程已成功完成。

  运行JOB

  SQL> begin
  2 dbms_job.run(:job1);
  3 end;
  4 /
  PL/SQL 过程已成功完成。

  上面设置job的时候要考虑你执行的日期。

上一页  [1] [2] 

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

Tags:oracle

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2022 biye5u.com. All Rights Reserved.