ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle job管理

oracle job管理

原创 Linux操作系统 作者:longqidong 时间:2012-02-22 19:58:21 0 删除 编辑

创建测试表
SQL> create table TEST(a int);

表已创建。

创建一个自定义过程
SQL> create or replace procedure MYPROC as
  2  begin
  3  insert into TEST values(1);
  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 过程已成功完成。

begin
  sys.dbms_job.submit(job => :job,--job标号
                      what => 'myProc;myProcs;myProcss(''测试'');',//用分号将多个存储过程分开,有参数的话直接写就可以了
                      next_date => to_date('07-04-2011 22:00:00', 'dd-mm-yyyy hh24:mi:ss'),--下一次执行的时间
                      interval => 'sysdate+1'); --执行的时间隔
  commit;
end;



运行JOB
SQL> begin
  2  dbms_job.run(:job1);
  3  end;
  4  /

PL/SQL 过程已成功完成。

SQL> select * from TEST;

a
-------------------
1

1

1

删除JOB
SQL> begin
  2  dbms_job.remove(:job1);
  3  end;
  4  /

PL/SQL 过程已成功完成。

=======================================

a、利用dbms_job.run()立即执行该job
   sql>begin
   sql>dbms_job.run(:jobno) 该jobno为submit过程提交时返回的job number
   sql>end;
   sql>/
b、利用dbms_job.broken()重新将broken标记为false
   sql>begin
   sql>dbms_job.broken (:job,false,next_date)
   sql>end;
   sql>/

========================================
SQL> create table a(a date);
Table created

创建一个过程
SQL> create or replace procedure test as
  2  begin
  3  insert into a values(sysdate);
  4  end;
  5  /
Procedure created

提交作业
SQL> declare
  2  job1 number;   //定义一个数字型变量
  3  begin
  4  dbms_job.submit(:job1,''test;'',sysdate,''sysdate+1/1440'');  //按分钟算一天1440分钟
  5  end;
  6  /
PL/SQL procedure successfully completed
job1
---------
4
SQL> commit;
Commit complete

运行作业
SQL> begin
  2  dbms_job.run(4);
  3  end;
  4  /
PL/SQL procedure successfully completed

删除作业
SQL> begin
  2  dbms_job.remove(4);
  3  end;
  4  /
PL/SQL procedure successfully completed
SQL> commit;
Commit complete

job change//修改作业
execute dbms_job.change(186,null,null,''sysdate+3'');
execute dbms_job.change(186,''scott.test(update)'');

DBA_JOBS
===========================================
字段(列)          类型                 描述 
JOB                NUMBER          任务的唯一标示号 
LOG_USER           VARCHAR2(30)    提交任务的用户 
PRIV_USER          VARCHAR2(30)    赋予任务权限的用户 
SCHEMA_USER        VARCHAR2(30)    对任务作语法分析的用户模式 
LAST_DATE          DATE            最后一次成功运行任务的时间 
LAST_SEC           VARCHAR2(8)     如HH24:MM:SS格式的last_date日期的小时,分钟和秒 
THIS_DATE     DATE            正在运行任务的开始时间,如果没有运行任务则为null 
THIS_SEC     VARCHAR2(8)     如HH24:MM:SS格式的this_date日期的小时,分钟和秒 
NEXT_DATE          DATE            下一次定时运行任务的时间 
NEXT_SEC           VARCHAR2(8)     如HH24:MM:SS格式的next_date日期的小时,分钟和秒 
TOTAL_TIME         NUMBER          该任务运行所需要的总时间,单位为秒 
BROKEN             VARCHAR2(1)     标志参数,Y标示任务中断,以后不会运行 
INTERVAL           VARCHAR2(200)   用于计算下一运行时间的表达式 
FAILURES    NUMBER     任务运行连续没有成功的次数 
WHAT               VARCHAR2(2000)  执行任务的PL/SQL块 
CURRENT_SESSION_LABEL RAW          MLSLABEL 该任务的信任Oracle会话符 
CLEARANCE_HI      RAW MLSLABEL     该任务可信任的Oracle最大间隙 
CLEARANCE_LO      RAW              MLSLABEL 该任务可信任的Oracle最小间隙 
NLS_ENV           VARCHAR2(2000)   任务运行的NLS会话设置 
MISC_ENV          RAW(32)          任务运行的其他一些会话参数

描述                    INTERVAL参数值 
每天午夜12点            ''TRUNC(SYSDATE + 1)'' 
每天早上8点30分         ''TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'' 
每星期二中午12点         ''NEXT_DAY(TRUNC(SYSDATE ), ''''TUESDAY'''' ) + 12/24'' 
每个月第一天的午夜12点    ''TRUNC(LAST_DAY(SYSDATE ) + 1)'' 
每个季度最后一天的晚上11点 ''TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ''Q'' ) -1/24'' 
每星期六和日早上6点10分    ''TRUNC(LEAST(NEXT_DAY(SYSDATE, ''''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)''

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22418990/viewspace-716966/,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle 11g安装报错
请登录后发表评论 登录
全部评论

注册时间:2009-08-26

  • 博文量
    94
  • 访问量
    428331