oracle定時器job用法小結

2022-07-26 13:18:12 字數 2372 閱讀 3280

顧名思義,定時器就是定時來完成某些操作,oracle中的定時器job也是這種用法,在oracle中可以通過定義job來定期執行某個程式。oracle提供內建包dbms_job來執行job的相關操作,比如定義、提交、更改、停止、移除等。

1、建立job

使用submit()過程,這個過程中有5個引數:job、what、next_date、interval、no_parse。 

procedure submit(

job    out    binary_integer,

what    in    varchar2,

next_date    in    date,

interval    in    varchar2,

no_parse    in    boolean:= false

);job引數是由submit()過程返回的binary_integer,這個值用來唯一標識乙個工作;what引數是將被執行的pl/sql**塊;next_date引數指何時將執行這個工作;interval引數指何時這個工作再次被執行,當interval設定為null時,該job執行結束以後,就被從佇列中刪除;no_parse引數指此工作在提交或執行時是否應進行語法分析,預設值為false,表示笨pl/sql**應該立即進行語法分析。

下面是乙個例項:

declare

jobno number;

begin

dbms_job.submit(job       => jobno,

what      => 'over_pack.add_dept(''education'',2710);',

next_date => trunc(sysdate + 1),

interval  => 'trunc(sysdate + 1)');

dbms_output.put_line('job_no = ' || jobno);

commit;

end;

2、檢視job

3、執行job

執行job通過dbms_job.run()來立即執行乙個指定的工作,這個過程只接收乙個引數。

begin

dbms_job.run(jobno); -- jobno就是上面定義過的jobno

end;

4、更改job

begin

dbms_job.change(1, null, trunc(sysdate + 1) + 6 / 24, 'sysdate+4/24');

end;

5、刪除job

begin

dbms_job.remove(jobno);

end;

定義了job之後,最重要的就是不要忘了用dbms_job.run()來執行job,以前我做的時候,就老是忘了執行。下面是一些常用的interval引數設定的雷子:

描述

interval引數值

每天執行一次

sysdate + 1

每小時執行一次

sysdate + 1 / 24

每10分鐘執行一次

sysdate + 10 / (60 * 24)

每30秒執行一次

sysdate + 30 / (60 * 24 * 60)

每隔乙個星期執行一次

sysdate + 7

不再執行該任務並刪除它

null

每天午夜12點

trunc(sysdate + 1)

每天早上8點30分

trunc(sysdate + 1) + (8 * 60 + 30) / (24 * 60)

每星期二中午12點

next_day(trunc(sysdate), 'tuesday') + 12 / 24

每個月第一天的午夜12點

trunc(last_day(sysdate) + 1)

每個季度最後一天的晚上11點

trunc(add_months(sysdate + 2 / 24, 3), 'q') - 1 / 24

每個星期六和星期日早上6點10分

trunc(least(next_day(sysdate, 'saturday'), next_day(sysdate, 'sunday'))) + (6 * 60 + 10) / (24 * 60)

使用next_day的時候,可能會出現「週中的日期錯誤」,可以試試看將英文的日期換成中文的,比如「friday」換成「星期五」。有關oracle中job的用法,還可以參考《巧用oracle中的job來執行程式》這篇文章。

oracle的job定時器

對於dba來說,資料庫job再熟悉不過了,因為經常要資料庫定時的自動執行一些指令碼,或做資料庫備份,或做資料的提煉,或做資料庫的效能優化,包括重建索引等等的工作。但是,oracle定時器job時間的處理上,千變萬化,今天我把比較常用寫法彙總如下 oracle定時任務有sys.dbms job包完成 ...

Oracle定時器(Job)彙總

對於 dba來說,資料庫 job再熟悉不過了,因為經常要資料庫定時的自動執行一些指令碼,或做資料庫備份,或做資料的提煉,或做資料庫的效能優化,包括重建索引等等的工作。但是,oracle 定時器job 時間的處理上,千變萬化,今天我把比較常用寫法彙總如下 job的引數一一說明一下 引數是由 submi...

自動執行oracle儲存過程 job定時器

1.建立乙個表,為了能清楚看到定時器的運 況我們建立乙個帶有日期欄位的表 create table job table run time date 2.建立儲存過程 create or replace procedure job proc is begin insert into job table...