一、ORACLE JOB概述
定时在后台执行相关操作。
例如:每天晚上点将一张表的数据保存到另一张表中;定时备份数据库等操作。
二、创建ORACLE JOB
1、 创建表
/*1、创建表*/
create table job_table(
j_id number(12),
j_date date
)
2、 创建序列
/*2、创建序列*/
create sequence job_seq
minvalue 1 maxvalue 999999999999 start with 1 increment by 1;
3、 创建过程
/*3、创建存储过程*/
create or replace procedure job_pro
is
begin
insert into system.job_table values(job_seq.nextval,sysdate);
end;
4、 创建job
DECLARE JOB NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT(JOB => JOB,
WHAT => 'job_pro;',
NEXT_DATE => sysdate,
INTERVAL => 'trunc(sysdate)+1+1/1440');
COMMIT;
END;
或
DECLARE JOB NUMBER;
BEGIN
DBMS_JOB.SUBMIT(JOB,'job_pro;',SYSDATE, 'trunc(sysdate)+1+1/1440');
COMMIT;
END;
代码讲解:
job:该参数是工作号(由submit()过程返回的binary_integer),它在问题中唯一标识工作。
what: 可以理解为,具体要做的操作,这里指向一个存储过程。
next_date:该参数指示何时此操作被执行。
interval:该参数指示一个工作重复执行的频度。
no_parse:该蚕食指示此工作在提交时或执行时是否应进行语法分析,TRUE:标识第一次执行时进行语法分析;FALSE:指示立即进行语法分析
注意:如果在job => job, 这里,改成“job => :job,”,oracle则会报“并非所有变量都已绑定”异常。声明了变量后,请把这个冒号去掉!
PS:dbms_job package包含以下过程:
·Broken()过程;
·change()过程;
·interval()过程;
·isubmit()过程;
·next_date()过程;
·remove()过程;
·run()过程;
·submit()过程;
·user_export()过程;
·what()过程;