oracle資料庫定時任務

2021-08-09 20:37:59 字數 2498 閱讀 7976

1.定時任務樣例

一:建立乙個表

create table t_free_twice( id number(8) primary key,name nvarchar2(20));

二、建立序列---記錄id值

-- create sequence

create sequence t_free_twice_log

minvalue 10

maxvalue 999999999999999999999999999

start with 111

increment by 1

cache 100;

三、建立序列、往t_free_twice表中插入資料時id自動增長

create or replace trigger trg_t_free_twice

before insert on t_free_twice

for each row

declare

begin

select t_free_twice_log.nextval into  :new.id from dual;

end trg_t_free_twice;

四:建立儲存過程,用來往t_free_twice表裡插入資料

create or replace procedure job_pro_test as

begin

insert into t_free_twice(free) values('5');

end;

五:建立oracle資料庫定時任務

declare

water_bill_job number;  --任務名稱

begin

dbms_job.submit

(job => water_bill_job,  --此任務在任務佇列中的編號

what => 'job_pro_test;',  --執行的任務的名稱及其輸入引數

next_date => trunc(to_date('2017-10-26 10:59','yyyy-mm-dd hh:mi'),'mi') ,--任務執行的時間,分鐘

interval => 'trunc(sysdate + 1) + (11*60+5)/(24*60)' ,--任務執行的時間間隔,該任務是每天11.05執行

no_parse => false  --no_parse引數指示此工作在提交時或執行時是否應進行語法分析——true,預設值false

);end;

next_date => trunc(to_date('2017-10-26 10:59','yyyy-mm-dd hh:mi'),'hh') ,--任務執行的時間,小時

next_date => trunc(to_date('2017-10-26 10:59','yyyy-mm-dd hh:mi'),'mi') ,--任務執行的時間,分鐘

select  *  from user_jobs;  --檢視使用者本身的定時任務

2,描述 interval引數值

每分鐘執行:'trunc(sysdate,'mi')+1/(24*60)'

每天午夜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)'

每月25號00:00執行: 'trunc(last_day(sysdate ) + 25)'

每個小時的第15分鐘執行,比如:8:15,9:15,10:15…:trunc(sysdate,'hh')+(60+15)/(24*60)。

每天:trunc(sysdate+1)

每週:trunc(sysdate+7)

每月:trunc(sysdate+30)

每個星期日:next_day(trunc(sysdate),'星期日')

每天6點:trunc(sysdate+1)+6/24

半個小時:sysdate+30/(24*60)

其他知識點:

1、job如果由於某種原因未能成功執行,oracle將重試16次後,還未能成功執行,將被標記為broken,重新啟動狀態為broken的job參見上述 3、4兩點;

2、dba_jobs,all_jobs,user_jobs,dba_jobs_running(包含正在執行job相關資訊) 這些檢視儲存了job的相關資訊

oracle資料庫定時任務

不久前,做的專案中需要用到定時任務 有兩種實現方式 應用程式,資料庫。決定採用資料庫的定時任務。關於資料庫定時任務的資料,網上有很多文章,但當自己在設計時,並沒有僅通過一篇文章就解決問題。於是決定綜合網上資料和自己的專案,寫一篇oracle資料庫自帶的job來實現定時任務。一 定時任務的建立 啟動 ...

oracle資料庫定時任務

常要oracle資料庫定時的自動執行一些指令碼,或做資料庫備份,或做資料的提煉,或做資料庫的效能優化,包括重建索引等等的工作,這時需要用到乙個函式dbms job.submit,來完成oracle定時器job時間的處理上。使用dbms job.submit這個函式,我們只需要考慮兩個事情 安排某一任...

Oracle資料庫定時任務

查詢當前 本賬戶 已有的定時任務 select job,broken,what,interval,t.from user jobs t 刪除定時某個任務 begin dbms job.remove 24 上乙個語句查詢出的定時任務編號 commit end 建立乙個新的定時任務 declare mt...