實(shí)現(xiàn)的功能:
每隔一分鐘自動(dòng)向getSysDate表中插入當(dāng)前的系統(tǒng)時(shí)間。
一、創(chuàng)測(cè)試表
create table getSysDate(test date);
二、創(chuàng)要定時(shí)執(zhí)行的存儲(chǔ)過(guò)程
create or replace procedure insertSysDate as
begin
insert into getSysDate values (sysdate);
end ;
三、創(chuàng)建JOB,即創(chuàng)建待執(zhí)行的定時(shí)任務(wù)過(guò)程
variable job1 number;
begin
dbms_job.submit(:job1,'insertSysdate;',sysdate,'sysdate+1/1440');
end;
四、啟動(dòng)JOB,即啟動(dòng)并運(yùn)行定時(shí)任務(wù)過(guò)程
begin
dbms_job.run(:job1);
end;
五、查看運(yùn)行效果
select to_char(test,'yyyy/mm/dd hh24:mi:ss') from getSysDate;
結(jié)果如下:
2007/08/03 10:53:11
2007/08/03 11:05:51
部分重點(diǎn)參數(shù)補(bǔ)充說(shuō)明:
DBMS_JOB.SUBMIT(:jobno,//job號(hào)
'your_procedure;',//要執(zhí)行的過(guò)程
trunc(sysdate)+1/24,//下次執(zhí)行時(shí)間
'trunc(sysdate)+1/24+1'//每次間隔時(shí)間
);
刪除job:dbms_job.remove(jobno);
修改要執(zhí)行的操作:job:dbms_job.what(jobno,what);
修改下次執(zhí)行時(shí)間:dbms_job.next_date(job,next_date);
修改間隔時(shí)間:dbms_job.interval(job,interval);
停止job:dbms.broken(job,broken,nextdate);
啟動(dòng)job:dbms_job.run(jobno);
修改job_queue_processes的值:(保證其不為0否則JOB不自動(dòng)運(yùn)行)
可通過(guò)select * from v$parameter;查看其值;
或者直接用show parameter job_queue_processes;查看如下:
NAME TYPE VALUE
--------------- ----------- ------------
job_queue_processes integer 10
方法1.startup pfile='C:oracleora90databaseinitorcl.ora';
//這個(gè)方法用來(lái)修改initorcl.ora文件的job_queue_processes參數(shù),然后重新啟動(dòng)數(shù)據(jù)庫(kù)
方法2.alter system set job_queue_processes=10
//這個(gè)方法不用重啟數(shù)據(jù)庫(kù)就可以生效,系統(tǒng)自動(dòng)修改init.ora文件以后即可生效 。