問題:假設有一個存儲過程p_test,如何才能每20分鐘執行一次?
解答:
1、把init.ora中如下兩個參數打開
JOB_QUEUE_INTERVAL=60
JOB_QUEUE_PROCESSES=4
job_queue_keep_connections=true
然後重啟一個庫,如果原來已經打開了則不用這步了
2、示例,以下由sqlplus 來執行,具體參照一下相關的文檔
VARIABLE jobno number;
BEGIN
DBMS_JOB.SUBMIT(:jobno,
’p_test;’
SYSDATE,’SYSDATE + 1/72’);
commit;
END;
DBMS_JOB.SUBMIT(:jobno,//job號
’your_procedure;’,//要執行的過程
trunc(sysdate)+1/24,//下次執行時間
’trunc(sysdate)+1/24+1’//每次間隔時間
);
刪除job:dbms_job.remove(jobno);
修改job:dbms_job.what(jobno,what);
修改下次執行時間:dbms_job.next_date(job,next_date);
修改間隔時間:dbms_job.interval(job,interval);
停止job:dbms.broken(job,broken,nextdate);
啟動job:dbms_job.run(jobno);
例子:
VARIABLE jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,
’Procdemo;’,
SYSDATE, ’SYSDATE + 1/720’);
commit;
end;