Oracle定時任務Job

2021-09-11 08:22:57 字數 2150 閱讀 6750

-->建立測試用表  

create table tb_job  

(  job_name    varchar2 (5),  

update_dt   varchar2 (20)  

);  

-->新增多個oracle job來併發執行  

declare  

job_name   varchar2 (20);  

begin  

dbms_output.put_line ('current sysdate is ' || to_char (sysdate, 'yyyymmdd hh24:mi:ss'));  

for i in 1 .. 5  

loop  

job_name := 'job_' || to_char (i);  

sys.dbms_scheduler.create_job (  

job_name          => job_name,  

start_date        => sysdate+1/1440,  

repeat_interval   => 'freq = minutely; interval=1',  

end_date          => null,  

job_class         => 'default_job_class',  

job_type          => 'plsql_block',  

job_action        =>   '    

begin  

insert into tb_job  

select '''  

|| job_name  

|| ''', to_char (sysdate, ''yyyymmdd hh24:mi:ss'') from dual;  

dbms_lock.sleep(60);  

commit;  

end;  

',  

enabled           => true,  

comments          => 'my test job');  

end loop;  

end;  

-->job執行的情況,可以看到5個job被逐一執行  

-->儘管我們定義時的next_run_date相差1秒,而此時job的執行後則每乙個相差1分鐘  

-->job_1與job_5相差4分多鐘,這是由於我們定義了dbms_lock.sleep(60)為1分鐘  

-->其次可以看出由於只有乙個job程序,因此每乙個job是乙個乙個被執行  

sql> select * from tb_job;  

job_n update_dt  

----- --------------------  

job_1 20130319 12:21:33  

job_2 20130319 12:22:35  

job_3 20130319 12:23:37  

job_4 20130319 12:24:39  

job_5 20130319 12:25:41  

-->移除job  

declare  

job_name   varchar2 (10);  

begin  

for i in 1 .. 5  

loop  

job_name := 'job_' || to_char (i);  

sys.dbms_scheduler.drop_job (job_name, force => true);  

end loop;  

end;      

-->移除測試表  

sql> drop table tb_job purge;  

a、job_queue_processes引數決定了job作業能夠使用的總程序數。

b、當該引數為0值,任何job都不會被執行,建議合理設定該值且至少大於1。

c、對於job執行時間也應該盡量合理的設定間隔以及啟動時間。

d、如果同一時間內執行的job數很多,過小的引數值導致job不得不進行等待。而過大的引數值則消耗更多的系統資源。

f、對於存在依賴關係的job,盡可能將其進行合併到乙個job中,如使用chain等。

oracle中定時任務job

oracle中的job能為你做的就是 在你規定的時間格式裡定時執行儲存過程,定時執行乙個任務 建立job及執行 variable job2010 number begin dbms job.submit job2010,spgenchanneluseroneday sysdate,sysdate 1...

Oracle中的job定時任務

1.plsql中學習job 學習job 建表 create table test job para date date commit insert into test job values sysdate commit select from test job 建立存貯過程 create orrep...

oracle 建立定時任務job,建立sql

建立定時任務,判斷如果已有這個定時任務,則刪除重建 declare jobnum number 5 0 jobid number 5 0 begin 查是否已經存在,排程的job select count into jobnum from dba jobs where upper what like...