實現的功能:
每隔一分鐘自動向getSysDate表中插入當前的系統時間。
一、創測試表
create table getSysDate(test date);
二、創要定時執行的存儲過程
create or replace procedure insertSysDate as
begin
insert into getSysDate values (sysdate);
end ;
三、創建JOB,即創建待執行的定時任務過程
variable job1 number;
begin
dbms_job.submit(:job1,'insertSysdate;',sysdate,'sysdate+1/1440');
end;
四、啟動JOB,即啟動并運行定時任務過程
begin
dbms_job.run(:job1);
end;
五、查看運行效果
select to_char(test,'yyyy/mm/dd hh24:mi:ss') from getSysDate;
結果如下:
2007/08/03 10:53:11
2007/08/03 11:05:51
部分重點參數補充說明:
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);
修改job_queue_processes的值:(保證其不為0否則JOB不自動運行)
可通過select * from v$parameter;查看其值;
或者直接用show parameter job_queue_processes;查看如下:
NAME TYPE VALUE
--------------- ----------- ------------
job_queue_processes integer 10
方法1.startup pfile='C:oracleora90databaseinitorcl.ora';
//這個方法用來修改initorcl.ora文件的job_queue_processes參數,然后重新啟動數據庫
方法2.alter system set job_queue_processes=10
//這個方法不用重啟數據庫就可以生效,系統自動修改init.ora文件以后即可生效 。