一、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()過程;