Oracle JOB用法小结(二)

2014-11-24 11:06:43 · 作者: · 浏览: 1
识一个存在的工作。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;
   www.2cto.com
  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 TEST(a date);
   www.2cto.com
  表已创建。
  
  创建一个自定义过程
  SQL> create or replace procedure MYPROC as
    begin
    insert into TEST values(sysdate);
    end;
    /
  
  过程已创建。
  
  创建JOB
  SQL> variable job1 number;
  SQL>
  SQL> begin
    dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次
    end;
    /
  
  PL/SQL 过程已成功完成。
  
  运行JOB
  SQL> begin
    dbms_job.run(:job1);
    end;
    /
  
  PL/SQL 过程已成功完成。
   www.2cto.com
  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 dbms_job.broken(jobno,true); end; /
  SQL> begin dbms_job.remove(:job1); end; /
  
  PL/SQL 过程已成功完成。
作者 Alex’Sky