如何通過一個JOB同時(shí)定時(shí)執(zhí)行多個過程?
--------------------------------------------------------------------------------
因?yàn)閠emp5表中的每行要分別從temp3的列以及temp4的列里面取數(shù)據(jù),然后在temp3,temp4中將取出來的數(shù)據(jù)條目刪除,之后將temp3,temp4中剩余的數(shù)據(jù)以及temp5中的數(shù)據(jù)一起插入目標(biāo)表。
至于dbms_job的用法,下面給你個例子(轉(zhuǎn)載自網(wǎng)上):
實(shí)現(xiàn)的功能:
每隔一分鐘自動向getSysDate表中插入當(dāng)前的系統(tǒng)時(shí)間。
一、創(chuàng)測試表
create table getSysDate(test date);
二、創(chuàng)要定時(shí)執(zhí)行的存儲過程
create or replace procedure insertSysDate as
begin
insert into getSysDate values (sysdate);
end ;
三、創(chuàng)建JOB,即創(chuàng)建待執(zhí)行的定時(shí)任務(wù)過程
variable job1 number;
begin
dbms_job.submit(:job1,'insertSysdate;',sysdate,'sysdate+1/1440');
end;
四、啟動JOB,即啟動并運(yùn)行定時(shí)任務(wù)過程
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ǔ)充說明:
DBMS_JOB.SUBMIT(:jobno,//job號
'your_procedure;',//要執(zhí)行的過程
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);
啟動job:dbms_job.run(jobno);
修改job_queue_processes的值:(保證其不為0否則JOB不自動運(yùn)行)
可通過select * from v$parameter;查看其值;
或者直接用show parameter job_queue_processes;查看如下:
NAME TYPE VALUE
--------------- ----------- ------------
job_queue_processes integer 10
方法1.startup pfile='Cracleora90databaseinitorcl.ora';
//這個方法用來修改initorcl.ora文件的job_queue_processes參數(shù),然后重新啟動數(shù)據(jù)庫
方法2.alter system set job_queue_processes=10
//這個方法不用重啟數(shù)據(jù)庫就可以生效,系統(tǒng)自動修改init.ora文件以后即可生效 。