每天1點執行的oracle job樣例
declare
x number;
begin
sys.dbms_job.submit
( job => x,
what => 'etl_run_d_date;',
next_date => to_date('2009-08-26 01:00:00','yyyy-mm-dd 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
Oracle Job 定時器簡單例項
首先要建立乙個測試資料庫.create table test tbl id number 12 not null,c data date 建立乙個序列.create sequence test seq minvalue 1 maxvalue 999999999999999999999999999 s...
PHP goto語句簡介和使用例項
goto操作符可以用來跳轉到程式中的某一指定位置。該目標位置可以用目標名稱加上冒號來hgjqlly標記。php中的goto有一定限制,只能在同乙個檔案和作用域中跳轉,也就是說你無法跳出乙個函式或類方法,也無法跳入到另乙個函式。你也無法跳入到任何迴圈或者switch 結構中。常見的用法是用來跳出迴圈或...
Oracle Job 語法和時間間隔的設定
初始化相關引數job queue processes alter system set job queue processes 39 scope spfile 最大值不能超過1000 job queue interval 10 排程作業重新整理頻率秒為單位 job queue process 表示o...