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;

浙公网安备 33010602011771号