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...