标签:运行 一个 acl 次数 行存储 mit user create 开始时间
Oracle定时任务使用到的是Oracle的job功能,使用在数据库层面,定时执行存储过程或者SQL语句。
1. 添加一个测试表:
1 create table job_test( 2 dates date, 3 );
2. 添加一个存储过程:
1 create or replace procedure job_pro_test as 2 begin 3 insert into job_test values (sysdate); 4 5 end;
3. 查看当前数据库的定时任务:
1 2 SELECT * FROM dba_jobs;
4. 添加一个定时任务:
1 declare
2 job_OpAutoDta number;
3 begin
4 dbms_job.submit(JOB => job_OpAutoDta, --自动生成JOB_ID
5 WHAT => ‘job_pro_test;‘, --需要执行的存储过程名称或SQL语句*,可接分号表示调用多个存储过程
6 NEXT_DATE => sysdate, --初次执行时间-立即执行
7 INTERVAL => ‘trunc(sysdate,‘‘mi‘‘)+1/(24*60)‘);--每隔1分钟执行一次
8 commit; 9 end;
5.根据某个job下次的执行时间
1 2 3 SELECT job,next_date,what FROM dba_jobs WHERE JOB = 定时任务的唯一标识码JOB; /*定时任务的下一次执行时间*/
6.--手动调用job
1 begin 2 3 DBMS_JOB.RUN(23); /*23 job的id*/ 4 5 end;
7.停止 job
1 begin 2 3 dbms_job.broken(jobId,true,next_date); /*停止一个job,jobId, job的ID,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。 */ 4 5 commit; 6 7 end;
8.删除 job
1 begin 2 3 dbms_job.remove(23); /*删除自动执行的job,参数是 job的id*/ 4 5 commit; 6 7 end;
9.修改 job 的间隔时间
1 begin 2 3 dbms_job.interval(job,interval); /*job job的ID,interval: 计算下一次任务执行的时间表达式*/ 4 5 commit; 6 7 end;
10.修改下一次执行时间
1 begin 2 3 dbms_job.next_date(job,next_date); /*job: job 的ID;nex_date:要修改后的计算下一次执行的时间表达式*/ 4 5 commit; 6 7 end;
11.修改定时任务 job 要执行的操作
1 begin 2 3 dbms_job.what(‘newProcedures();‘); /*newProcedures(); 要更改的新操作名称*/ 4 5 commit; 6 7 end;
其他知识点:
dba_jobs 表中字段含义:
JOB 任务的唯一标识码
LOG_USER 提交任务的用户
PRIV_USER 赋予任务权限的用户
SCHEMA_USER 对用户作语法分析的用户模式
LAST_DATE 最后一次成功执行任务的时间
LAST_SEC 最后一次成功执行任务的时间的时分秒
THIS_DATE 正在执行的任务的开始时间,若没有则为空
THIS_SEC 正在执行的任务的开始时间的时分秒,若没有则为空
NEXT_DATE 下一次执行定时任务的时间
NEXT_SEC 下一次执行定时任务的时间的时分秒
TOTAL_TIME 执行当前任务所需要的时间,单位:秒
BROKEN 标志参数,Y表示任务中断,以后不会再运行
INTERTAL 计算下一次执行定时任务的时间表达式
FAILURES 当前定时任务执行失败的总次数
WHAT 执行任务的PL/SQL代码块
NLS_ENV 任务执行的NLS会话设置
MISC_ENV 定时任务运行的其他一些参数设置
INSTANCE 标识当前任务运行是否受限,0 没有受限
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)‘
每月25号00:00执行: ‘TRUNC(LAST_DAY(SYSDATE ) + 25)‘
--------------------------
1:每分钟执行
Interval => TRUNC(sysdate,‘mi‘) + 1/ (24*60)
或
Interval => sysdate+1/1440
2:每天定时执行
例如:每天的凌晨1点执行
Interval => TRUNC(sysdate) + 1 +1/ (24)
3:每周定时执行
例如:每周一凌晨1点执行
Interval => TRUNC(next_day(sysdate,‘星期一‘))+1/24
4:每月定时执行
例如:每月1日凌晨1点执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24
5:每季度定时执行
例如每季度的第一天凌晨1点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),‘Q‘) + 1/24
6:每半年定时执行
例如:每年7月1日和1月1日凌晨1点
Interval => ADD_MONTHS(trunc(sysdate,‘yyyy‘),6)+1/24
7:每年定时执行
例如:每年1月1日凌晨1点执行
Interval =>ADD_MONTHS(trunc(sysdate,‘yyyy‘),12)+1/24
原文参考:https://blog.csdn.net/sinat_35626559/article/details/78912828
标签:运行 一个 acl 次数 行存储 mit user create 开始时间
原文地址:https://www.cnblogs.com/jiuhuacha/p/11692052.html