oracel 定時執行儲存過程

2021-08-20 08:32:57 字數 2546 閱讀 3181

一、環境:oracel 11g

二、步驟

1、建立儲存過程

例如:儲存過程邏輯為:在表中插入一條資料

create or replace procedure 儲存過程名稱 is

begin

insert into t_tset_job (test_id,create_time)values ( seq_t_tset_job.nextval,sysdate); --插入資料庫

end;

2、建立定時任務

dbms_job.isubmit(jobid,what,next_date,interval,no_parse);

jobid:自己隨便寫乙個數字,但需要注意必須唯一

what:要執行的儲存過程,不用寫begin end 但在結尾要加分號

next_date:下一次執行的時間,這個引數是時間格式的,而不是字串

interval:執行頻率,也就是計算下一次執行時間的公式,是字串格式的

sysdate+1              表示每天執行一次

sysdate+1/24           表示每小時執行一次

sysdate+1/(24*60)      表示每分鐘執行一次

sysdate+1/(24*60*60)   表示每秒執行一次

no_parse:是否在執行時進行語法分析,true指示此pl/sql**在它第一次執行時應進行語法分析,而false指示本pl/sql**應立即進行語法分析。一般false就好了。

例如:begin  

dbms_job.isubmit(任務名稱,'time_test;',sysdate,'sysdate+1/1440',false);  

end;  

3、啟動任務

begin  

dbms_job.run(任務名稱);  

end;

4、停止任務

dbms_job.broken(jobid,off);

jobid:user_jobs表中的jobid(主鍵),數字格式

off:定時任務開關,true or false,true關閉,false開啟

例如:begin  

dbms_job.broken(任務名稱,false);  

end; 

5、刪除定時任務

dbms_job.remove(jobid);

jobid:user_jobs表中的jobid(主鍵),數字格式

6、檢視所有的定時任務

select * from dba_jobs;

7、修改定時任務:

dbms_job.change(jobid,what,next_date,interval);

jobid:user_jobs表中的jobid(主鍵),數字格式

what:要執行的儲存過程,不用寫begin end 但在結尾要加分號

next_date:下一次執行的時間,這個引數是時間格式的,而不是字串

interval:執行頻率,也就是計算下一次執行時間的公式,是字串格式的

關於job執行時間

1:每分鐘執行

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

2:每天定時執行

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

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

3:每週定時執行

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

interval => trunc(next_day(sysdate,'星期一'))+1/24

4:每月定時執行

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

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

5:每季度定時執行

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

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

6:每半年定時執行

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

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

7:每年定時執行

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

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

job的執行頻率設定

1.每天固定時間執行,比如早上8:10分鐘:trunc(sysdate+1) + (8*60+10)/24*60

2.toad中提供的:

每天:trunc(sysdate+1)

每週:trunc(sysdate+7)

每月:trunc(sysdate+30)

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

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

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

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

更多資料:

儲存過程定時執行

有兩種方法 1 編寫 shell 指令碼,使用 crontab 在後台定時執行 a shell 指令碼pr merge query report.sh bin sh oracle base oracle home 指定環境變數 oracle home oracle home data nls lan...

儲存過程定時執行

儲存過程定時執行 有兩種方法 1 編寫 shell 指令碼,使用 crontab 在後台定時執行 a shell 指令碼bash 2.03 more pr merge query report.sh bin sh oracle base oracle home 指定環境變數 oracle home ...

定時執行儲存過程

下面是我在網上抄的一段話.其實有傻瓜式的方法.開啟sql server管理器,如果版本高的話,可以看到有sql server 點開它自己琢磨下就會了.太簡單就不寫出來了.建立作業就行了.建立作業 exec msdb.sp add job job name 資料處理 建立作業步驟 declare sq...