11. Oracle 定時任務基礎
11.1 簡介
oracle job 是應用在數據庫層面,用來定時執行存儲過程或者 SQL 語句的定時器。
11.2 查詢
--當前庫中運行的 job
SELECT t.* FROM dba_jobs t
11.3 創建
11.3.1 SQL語句執行創建
declare
job number;
BEGIN
DBMS_JOB.SUBMIT(
JOB => job, /*自動生成JOB_ID*/
WHAT =>'PRO_USER_ORDER(to_char(SYSDATE,'yyyyMMdd'));', /*需要執行的存儲過程名稱或SQL語句*/
NEXT_DATE => sysdate, /*初次執行時間(立即執行)*/
INTERVAL => 'trunc(sysdate,''mi'')+1/(24*60)' /*執行間隔(每隔1分鍾執行一次)*/
);
commit;
end;
11.3.2 pl/sql 圖形化界面創建
11.4 查詢某job的下一次執行時間
--查詢定時任務的下一次執行時間
SELECT job,next_date,what FROM dba_jobs WHERE JOB = 14; --14:定時任務的唯一標識碼(即job編號)
11.5 手動執行某個job
--手動調用job
BEGIN
DBMS_JOB.RUN (14) ; --14:job的id
END ;
11.6 手動停止某個job
--手動停止job
/*
格式:dbms_job.broken(jobId,broken,next_date);
jobId:job的ID。
broken:值為true時,表示禁用job,false時,表示啟用job。
next_date:(某一時刻停止),也可是sysdate(立刻停止)(默認值為sysdate)。
*/
BEGIN
dbms_job.broken (jobId, TRUE, next_date) ;
COMMIT ;
END ;
11.7 手動刪除某個job
--手動刪除job
begin
dbms_job.remove(83); --刪除自動執行的job,參數是 job的id
commit;
end;
11.8 修改定時任務的執行間隔
--修改job的間隔時間
/*
job:job的ID
interval: 任務執行間隔的時間表達式
*/
begin
dbms_job.interval(job,interval);
commit;
end;
11.9 修改定時任務的下一次執行時間
--修改job的下一次執行時間
/*
job:job的ID
next_date: 下一次任務執行的時間表達式
*/
begin
dbms_job.next_date(job,next_date);
commit;
end;
11.10 修改定時任務 job 要執行的操作
--修改定時任務 job 要執行的操作
/*
jobId:job的ID
newProcedures(): 新的存過
*/
begin
dbms_job.what(jobId,'newProcedures();');
commit;
end;
轉載自:有夢想的肥宅