Oracle JOB

 

select * from dba_jobs;

select * from all_jobs;

select * from user_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_SES

SION_LABELRAW

MLSLABEL

该任务的信任Oracle会话符

CLEARANCE_HI

RAWMLSLABEL

该任务可信任的Oracle最大间隙

CLEARANCE_LO

RAWMLSLABEL

该任务可信任的Oracle最小间隙

NLS_ENV

VARCHAR2(2000)

任务运行的NLS会话设置

MISC_ENV

RAW(32)

任务运行的其他一些会话参数

 

-- 正在运行job
select * from dba_jobs_running;

其中最重要的字段就是job这个值就是我们操作job的id号,what 操作存储过程的名称,next_date 执行的时间,interval执行间隔

 

 

sysdate+1/2      每隔12小时执行一次

 

sysdate+3/1440   每隔 3 分钟执行一次

 

trunc(sysdate+1) 每天凌晨

 

trunc(sysdate+7)  每七天凌晨

 

trunc(sysdate+30)  每30天凌晨

 

next_day(trunc(sysdate), ''sunday'')  每周日凌晨

 

trunc(sysdate+1)+6/24 每天6点

 

trunc(sysdate+1)+1/3  每天的8点运行

 

sysdate+30/1440 每30分钟

 

trunc(last_day(sysdate)) + 1 每月第一天凌晨

 

trunc(last_day(sysdate)) + 1 + 8/24 + 30/1440 每月第一天8点半

 

 

创建JOB语法

  

declare
  job2 number;
begin
  dbms_job.submit(job       => job2,
                  what      => 'myproc;',
                  next_date => sysdate,
                  interval  => 'sysdate+1/1440');
  commit;
end;

--或者--
declare job1 number; begin dbms_job.submit(job1,'MYPROC;',sysdate,'sysdate+1/1440');//每分钟执行一次 commit; end;

 

–创建job系统会自动分配一个任务号jobno.。
2、删除job: dbms_job.remove(jobno); 或者:exec sys.dbms_ijob.remove(jobno);

3、修改要执行的操作: job:dbms_job.what(jobno, what);  

4、修改下次执行时间:dbms_job.next_date(jobno, next_date);

5、修改间隔时间:dbms_job.interval(jobno, interval); 

6、启动job: dbms_job.run(jobno);

7、停止job: dbms.broken(jobno, broken, nextdate); –broken为boolean值

 示例

begin
    dbms_job.interval(43,'sysdate+1/24'); --43为jobid
    commit;
end;

 

posted @ 2019-10-22 16:34  一了然  阅读(313)  评论(0)    收藏  举报