Oracle定時器(Job)彙總

2022-08-25 10:57:28 字數 3085 閱讀 5407

對於

dba來說,資料庫

job再熟悉不過了,因為經常要資料庫定時的自動執行一些指令碼,或做資料庫備份,或做資料的提煉,或做資料庫的效能優化,包括重建索引等等的工作。但是,

oracle

定時器job

時間的處理上,千變萬化,今天我把比較常用寫法彙總如下:

job的引數一一說明一下:

引數是由

submit()

過程返回的

binary_ineger

。這個值用來唯一標識乙個工作;

引數是將被執行的

pl/sql

**塊;

引數指識何時將執行這個工作。寫

job的時候可以不指定該值;

引數何時這個工作將被重執行。

interval

這個值是決定

job何時,被重新執行的關鍵。

例如:有儲存過程

p_dosomethings

,需要被不同的時間間隔執行。

declare   

jobno number;   

begin   

dbms_job.submit(

jobno,

'p_dosomething;

',  

--what

to_date(

'20090101020000',

'yyyy-mm-dd hh24:mi:ss'),

--next_date,可以不填

'interval時間字串'--

interval,關鍵設定

);   

commit;   

end; 

建乙個job,定時執行不帶引數的函式:

declare

begin

v_begin    := trunc(sysdate) + 12/24; --《當前日期的 12:00>

dbms_job.submit(job,                  --job編號

false,

false);

dbms_output.put_line('job(任務)編號:' || job);

commit;

end;

1、 每分鐘執行

trunc(sysdate,』mi

』) + 1

/ (24

*60)

2、 每天定時執行

2點執行

trunc(

sysdate) + 1+

2/ (24)

3、 每週定時執行

2點執行

trunc(next_day(

sysdate,

2))+2/

24 --星期一,一周的第二天

4、 每月定時執行

1日凌晨

2點執行

trunc(last_day(

sysdate))+1+

2/245、 

每季度定時執行

2點執行

trunc(add_months(

sysdate,3),

'q') + 2/

246、 

每半年定時執行7月

1日和1月

1日凌晨2點

add_months(trunc(

sysdate,

'yyyy'),6

)+2/24

7、 每年定時執行1月

1日凌晨

2點執行

add_months(trunc(

sysdate,

'yyyy'

),12)+2

/248、 sql語句

-------------查詢job-----------------

select job, what, next_date, next_sec, sysdate, failures, broken,interval

from user_jobs a;

-------------新增job-----------------

variable n number;

begin

dbms_job.submit(:n, 'my_jop;', sysdate,'sysdate+2/(24*60*60)');

commit;

end;

-------------修改job-----------------

begin

dbms_job.change(62 ,'my_jop;', sysdate,'sysdate+2/(24*60)' );

commit;

end;

begin

dbms_job.change(62 ,'my_jop;', to_date('2011-08-01 22:00:00', 'yyyy-mm-dd hh24:mi:ss'),'sysdate+1');

commit;

end;

-------------刪除job-----------------

begin

dbms_job.remove(41);

end;

-------------執行job-----------------------

begin

dbms_job.run(41);

end;

9、job案例:

建乙個job,定時執行帶引數的函式:

declare

begin

'declare v_sumsg varchar(200);v_sumwf varchar(200); v_sumzxcf varchar(200); begin sg_wf_zxcf_syn(v_sumsg,v_sumwf,v_sumzxcf);end;',    --what值

false,

false);

dbms_output.put_line('job(任務)編號:' || job);

commit;

end;

oracle的job定時器

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

oracle定時器job用法小結

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

Oracle定時器(Job)各時間段寫法彙總

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