七、Oracle SQL(Oracle 定時任務基礎)


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;

轉載自:有夢想的肥宅


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM