oracle job的簡介和例項

2021-05-21 17:50:43 字數 3660 閱讀 7706

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