資料庫Job定時任務

2022-07-15 06:54:08 字數 1632 閱讀 3981

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

在總結之前,先把job的引數一一說明一下:

job引數是由submit()過程返回的binary_ineger。這個值用來唯一標識乙個工作;

what引數是將被執行的pl/sql**塊;

next_date引數指識何時將執行這個工作。寫job的時候可以不指定該值;

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

其中interval這個值是決定job何時,被重新執行的關鍵。

例如:有儲存過程 userdatacopytoeseg,需要被不同的時間間隔執行。

declare

jobno number;

begin

sys.dbms_job.submit(job => :job,

what => 'userdatacopytoeseg;',

next_date => to_date('04-05-2017 02:00:00', 'dd-mm-yyyy hh24:mi:ss'),

interval => 'trunc(sysdate) + 1 +2 / (24)');

commit;

end;

查詢job任務

select * from dba_jobs

修改程序數

alter system set job_queue_processes=10 scope=both;

1、 每分鐘執行

interval => trunc(sysdate,』mi』) + 1 / (24*60)

2、 每天定時執行

例如:每天的凌晨2點執行

interval => trunc(sysdate) + 1 +2 / (24)

3、 每週定時執行

例如:每週一凌晨2點執行

interval => trunc(next_day(sysdate,2))+2/24 --星期一,一周的第二天

4、 每月定時執行

例如:每月1日凌晨2點執行

interval =>trunc(last_day(sysdate))+1+2/24

5、 每季度定時執行

例如每季度的第一天凌晨2點執行

interval => trunc(add_months(sysdate,3),'q') + 2/24

6、 每半年定時執行

例如:每年7月1日和1月1日凌晨2點

interval => add_months(trunc(sysdate,'yyyy'),6)+2/24

7、 每年定時執行

例如:每年1月1日凌晨2點執行

interval =>add_months(trunc(sysdate,'yyyy'),12)+2/24

當然上面羅列不可能照顧到方方面面,但是稍微變化一下,就能衍生出無數的例子,聰明的你一定會的吧,我這裡就不多羅嗦了。

Oracle定時任務Job

建立測試用表 create table tb job job name varchar2 5 update dt varchar2 20 新增多個oracle job來併發執行 declare job name varchar2 20 begin dbms output.put line curre...

oracle中定時任務job

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

Linux 排JOB定時任務

排job的3種方法,at方法只能執行一次,crontab可迴圈執行比較靈活,anacrontable可以檢測job是否正常執行,沒有執行就會重新執行比較智慧型一些,但是要執行的指令指令碼要 放到相應的houly,daily資料夾下。at只能執行一次,使用這個指令有白名單,黑名單控制。使用這個指令一樣...