declare
x number;
begin
sys.dbms_job.submit
( job => x
,what => 'syn_rpt_members_relation;'
,next_date => to_date('02-07-2008 01:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'trunc(sysdate)+1+1/24'
,no_parse => false
);sys.dbms_output.put_line('job number is: ' || to_char(x));
commit;
end; /
以上是明確指定每天的1點執行此job,如果指定是每天中午12點執行interval需要指定為'trunc(sysdate)+1+12/24',如果僅僅指定interval為一天,這樣當你手工用dbms_job.run(job)去執行一次時,job每天的執行時間是會改變的,如果你想job每天在固定時間執行,可以參考上面的例子.
初始化相關引數job_queue_processes
alter system set job_queue_processes=39 scope=spfile;//最大值不能超過1000 ;job_queue_interval = 10 //排程作業重新整理頻率秒為單位
job_queue_process 表示oracle
能夠併發的job的數量,可以通過語句
show parameter job_queue_process;
來檢視oracle中job_queue_process的值。當job_queue_process值為0時表示全部停止oracle的job,可以通過語句
alter system set job_queue_processes = 10;
來調整啟動oracle的job。
提交job語法:
begin
sys.dbms_job.submit(job => :job,
what => 'p_clear_packbal;',
next_date => to_date('04-08-2008 05:44:09', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate+ 1/360');
commit;
end;
/-------------------------
建立job
variable jobno number;
begin
dbms_job.submit(:jobno, 'p_cred_plan;',sysdate,'sysdate+1/2880',true);
commit;
執行job
sql> begin
dbms_job.run(:job1);
end;
/刪除job
sql> begin
dbms_job.remove(:job1);
end;
/dba_jobs
===========================================
字段(列) 型別 描述
job number 任務的唯一標示號
log_user varchar2(30) 提交任務的使用者
priv_user varchar2(30) 賦予任務許可權的使用者
schema_user varchar2(30) 對任務作語法分析的使用者模式
last_date date 最後一次成功執行任務的時間
last_sec varchar2(8) 如hh24:mm:ss格式的last_date日期的小時,分鐘和秒
this_date date 正在執行任務的開始時間,如果沒有執行任務則為null
this_sec varchar2(8) 如hh24:mm:ss格式的this_date日期的小時,分鐘和秒
next_date date 下一次定時執行任務的時間
next_sec varchar2(8) 如hh24:mm:ss格式的next_date日期的小時,分鐘和秒
total_time number 該任務執行所需要的總時間,單位為秒
broken varchar2(1) 標誌引數,y標示任務中斷,以後不會執行
interval varchar2(200) 用於計算下一執行時間的表示式
failures number 任務執行連續沒有成功的次數
what varchar2(2000) 執行任務的pl/sql塊
current_session_label raw mlslabel 該任務的信任oracle會話符
clearance_hi raw mlslabel 該任務可信任的oracle最大間隙
clearance_lo raw mlslabel 該任務可信任的oracle最小間隙
nls_env varchar2(2000) 任務執行的nls會話設定
misc_env raw(32) 任務執行的其他一些會話引數
--------------------------
描述 interval引數值
每天午夜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)'
1:每分鐘執行
interval => trunc(sysdate,'mi') + 1/ (24*60)
或 interval => sysdate+1/1440
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
********************
begin
sys.dbms_job.submit(job => :job,
what => 'check_err;',
next_date => trunc(sysdate)+23/24,
interval => 'trunc(next_day(sysdate,''星期五''))+23/24');
commit;
end;
其中:job是系統自動產生編號,check_err是我的乙個過程,next_date設定下次執行時間,這裡是今天晚上23:00,interval設定時間間隔,多久執行一次,這裡是每週的星期五晚上23:00,函式next_day返回日期中包含指定字元的日期,trunc 函式去掉日期裡的時間,也就是得到的是某天的00:00,時間是以天為單位的所以要得到某某點某某分,就需要分數:
1/24 一小時;
1/1440 一分;
1/3600 一秒;
C 每天定時執行任務(每天凌晨1點執行)
專案中有個需求,需要在每天凌晨1點執行幾個功能,怎麼些呢?平時經常用的那些timer,更多的是應用於間隔特定時長執行,而非在具體某個時間點執行。網上有多種方法,選擇了其中乙個比較簡單的 如下 region 定時器 設定定時執行 settaskatfixedtime 在form load 中呼叫 pr...
winform 每天定時執行(多個時間點)
首先,在需要執行的函式中新增 定時器 system.timers.timer timer new system.timers.timer timer.enabled true timer.interval 1000 執行間隔時間,單位為毫秒 timer.start 指定每天時間1執行 timer.e...
day1 每天進步一點
一 linux 系統執行級別一般為 0 6,請分別寫出每個級別的含義?二 linux 系統中檢視中文亂碼,請問如何解決亂碼問題?三 linux系統優化 效能優化 安全優化?四 你用過的伺服器型號有哪些?五 程式 程序和守護程序的區別?六 提公升使用者體驗的 解決方案?七 buffer與cache區別...