job的相关操作
-
-
- 1.创建job基本语法:
- 2.查询job:
- 3.其他job相关的存储过程:
- 4.常用时间间隔
-
1.创建job基本语法:
declare
job_n number;
begin
dbms_job.submit(job => job_n,
what => 'procedures_name;', --执行的存储过程的名字," ; "必须有
next_date => sysdate,
interval => 'TRUNC(sysdate+1)+22/24'); --每天十点执行
commit;
end;
(1)使用dbms_job.submit()存储过程,这个过程有五个参数:job、what、next_date、interval与no_parse。
procedure submit(
job OUT binary_ineger,
what IN varchar2,
next_date IN date,
interval IN varchar2,
no_parse IN booean:=FALSE
)
job参数是输出参数,由submit()过程返回的binary_ineger,这个值用来唯一标识一个工作。一般定义一个变量接收,可以去user_jobs视图查询job值。
what参数是将被执行的PL/SQL代码块,存储过程名称等。
next_date参数指识何时将运行这个工作。
interval参数指何时这个工作将被重执行。
no_parse参数指示此工作在提交时或执行时是否应进行语法分析——默认值false。TRUE指示此PL/SQL代码在它第一次执行时应进行语法分析,而FALSE指示本PL/SQL代码应立即进行语法分析。
(2)isubmit()过程用来用特定的job号提交一个job。参数与submit()相同。
2.查询job:
查询当前用户下的job:
select * from user_jobs;
查询所有job:
select * from dba_jobs;
查询正在运行的job:
select * from dba_jobs_running;
3.其他job相关的存储过程:
(1) broken() 过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。这个过程有三个参数:job、broken与next_date。
procedure broken (
job IN binary_integer,
broken IN boolean,
next_date IN date := SYSDATE
)
job参数是工作号,唯一标识工作。
broken参数指示此工作是否将标记为破——true说明此工作将标记为破,而false说明此工作将标记为未破。
next_date参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。
(2) change() 过程用来改变指定job的设置。
这个过程有四个参数:job、what、next_date、interval。
procedure change (
job IN binary_integer,
what IN varchar2,
next_date IN date,
interval IN varchar2
)
job参数是一个整数值,它唯一标识此工作。
what参数是由此job运行的一块PL/SQL代码块。
next_date参数指示何时此job将被执行。
interval参数指示一个job重执行的频度。
(3) remove()过程来删除一个已计划运行的job。这个过程接收一个参数:
job参数唯一地标识一个工作,这个参数的值是由为此工作调用submit()过程返回的job参数的值,已在运行的job不能删除。
(4) run() 过程用来立即执行一个指定的job。这个过程只接收一个参数:
job参数标识将被立即执行的工作。job创建之后,看情况需不需要立即执行job,如果next_date在当前日期之后,如果执行run的话立即会执行一次,否则是到指定的时间执行;如果你设置的next_date的时间在当前日期之前那么当时run和不run都会在系统当前的时间执行一次。
4.常用时间间隔
1、每分钟执行
TRUNC(sysdate,‘mi’)+1/(24*60)
2、每天定时执行
例如:
每天凌晨0点执行
TRUNC(sysdate+1)
每天凌晨1点执行
TRUNC(sysdate+1)+1/24
每天早上8点30分执行
TRUNC(SYSDATE+1)+(860+30)/(2460)
3、每周定时执行
例如:
每周一凌晨2点执行
TRUNC(next_day(sysdate,1))+2/24
TRUNC(next_day(sysdate,‘星期一’))+2/24
每周二中午12点执行
TRUNC(next_day(sysdate,2))+12/24
TRUNC(next_day(sysdate,‘星期二’))+12/24
4、每月定时执行
例如:
每月1日凌晨0点执行
TRUNC(LAST_DAY(SYSDATE)+1)
每月1日凌晨1点执行
TRUNC(LAST_DAY(SYSDATE)+1)+1/24
5、每季度定时执行
每季度的第一天凌晨0点执行
TRUNC(ADD_MONTHS(SYSDATE,3),‘q’)
每季度的第一天凌晨2点执行
TRUNC(ADD_MONTHS(SYSDATE,3),‘q’)+2/24
每季度的最后一天的晚上11点执行
TRUNC(ADD_MONTHS(SYSDATE+ 2/24,3),‘q’)-1/24
6、每半年定时执行
例如:
每年7月1日和1月1日凌晨1点执行
ADD_MONTHS(TRUNC(sysdate,‘yyyy’),6)+1/24
7、每年定时执行
例如:
每年1月1日凌晨2点执行
ADD_MONTHS(TRUNC(sysdate,‘yyyy’),12)+2/24