1、建立任務執行的儲存過程,如名稱為testjob,向測試表中插入資料
// 建立乙個sequence物件,提供自增長的序列號
create sequence seq_createid
increment by 1
start with 1
nomaxvalue
minvalue 1
nocycle
nocache;
//建立乙個儲存過程
create or replace procedure testjob is
id number(10);
begin
select seq_createid.nextval into id from dual;
insert into test_job(id,name,age)
values(id,'allen',18);
end;
2、定時器對應的dbms_jobs資料夾,右鍵新建(new)
3、建立任務:
4、檢視任務
1、建立任務執行的儲存過程,如名稱為testjob,向測試表中插入資料,如文章開頭,此處省略。
2、建立乙個 定時任務 job
declare
job number;
begin
dbms_job.submit(
job => job, /*自動生成job_id*/
what => 'testjob;', /*需要執行的儲存過程名稱或sql語句*/
next_date => sysdate, /*初次執行時間-立即執行*/
interval => 'trunc(sysdate,''mi'')+1/(24*60)' /*每隔1分鐘執行一次*/
);
commit;
end;
3、查詢定時任務相關字段資訊
4 、停止定時任務
declare
begin
dbms_job.broken(24,true,sysdate); /*停止乙個job,jobid, job的id,裡面引數true也可是false,next_date(某一時刻停止)也可是sysdate(立刻停止)。 */
commit;
end;
5、啟動指定定時任務
declare
begin
dbms_job.run(24); /*24 job的id*/
commit;
end;
6、刪除定時任務
declare
begin
dbms_job.remove(24); /*刪除自動執行的job,引數是 job的id*/
commit;
end;
7、修改定時任務的間隔時間
declare
begin
dbms_job.interval(24,interval => 'trunc(sysdate)+1'); /*第乙個引數為job的id,第二個引數interval: 計算下一次任務執行的時間表示式*/
commit;
end;
8、修改下一次執行時間
declare
begin
dbms_job.next_date(24,to_date('2020-11-9 12:08:00','yyyy-mm-dd hh24:mi:ss')); /*第乙個引數:job的id;第二個引數:要修改後的計算下一次執行的時間表示式*/
commit;
end;
9、修改定時任務要執行的操作
declare
begin
dbms_job.what(24,'testjob2();'); /* 第乙個引數:job的id;第二個引數:要更改的新操作名稱(操作名必須存在)*/
commit;
end;
1、dba_jobs 表中字段含義
dba_jobs 表中字段含義:
job 任務的唯一標識碼
log_user 提交任務的使用者
priv_user 賦予任務許可權的使用者
schema_user 對使用者作語法分析的使用者模式
last_date 最後一次成功執行任務的時間
last_sec 最後一次成功執行任務的時間的時分秒
this_date 正在執行的任務的開始時間,若沒有則為空
this_sec 正在執行的任務的開始時間的時分秒,若沒有則為空
next_date 下一次執行定時任務的時間
next_sec 下一次執行定時任務的時間的時分秒
total_time 執行當前任務所需要的時間,單位:秒
broken 標誌引數,y表示任務中斷,以後不會再執行
intertal 計算下一次執行定時任務的時間表示式
failures 當前定時任務執行失敗的總次數
what 執行任務的pl/sql**塊
nls_env 任務執行的nls會話設定
misc_env 定時任務執行的其他一些引數設定
instance 標識當前任務執行是否受限,0 沒有受限
2、interval 部分引數值示
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)'
每月25號00:00執行: 'trunc(last_day(sysdate ) + 25)'
--------------------------
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建立定時任務
oracle建立三個定時任務,每個小時呼叫一次report hour,每天呼叫一次report day,每個月呼叫一次report month declare job1 number job2 number job3 number begin sys.dbms job.submit job job1...
Oracle建立定時任務
開啟命令列操作一下步驟 1 sqlplus as sysdba 2 conn 使用者名稱 密碼 3 variable job num 4 begin dbms job.submit job num,testjob trunc sysdate 23 24,trunc sysdate 23 24 end...
Oracle建立定時任務
開啟命令列操作一下步驟 1 sqlplus as sysdba 2 conn 使用者名稱 密碼 3 variable job num 4 begin dbms job.submit job num,testjob trunc sysdate 23 24,trunc sysdate 23 24 end...