首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle DBMS_JOB 定時排程實作:每週五晚間 23:00 執行

     編輯:Oracle 資料庫基礎

完整提交語法

VARIABLE jobno NUMBER;
BEGIN
    DBMS_JOB.SUBMIT(
        job       => :jobno,
        what      => 'check_err;',                    -- 要執行的程序
        next_date => TRUNC(SYSDATE) + 23/24,          -- 今天 23:00
        interval  => 'TRUNC(NEXT_DAY(SYSDATE,''FRIDAY'')) + 23/24'  -- 每週五 23:00
    );
    COMMIT;
END;
/

時間參數解析

  • SYSDATE 以「天」為單位,1 = 1 天
  • 1/24 = 1 小時,1/1440 = 1 分鐘,1/86400 = 1 秒
  • TRUNC(SYSDATE) = 今天 00:00
  • TRUNC(SYSDATE) + 23/24 = 今天 23:00
  • NEXT_DAY(SYSDATE, 'FRIDAY') = 下個週五 00:00
  • TRUNC(NEXT_DAY(...)) + 23/24 = 下個週五 23:00

常用間隔範例

需求interval 運算式
每 15 分鐘'SYSDATE + 1/24/4'
每小時'SYSDATE + 1/24'
每天 02:00'TRUNC(SYSDATE+1) + 2/24'
每週一 03:30'TRUNC(NEXT_DAY(SYSDATE,''MONDAY'')) + 3.5/24'
每月 1 號 01:00'TRUNC(ADD_MONTHS(SYSDATE,1),'MM') + 1/24'

管理指令

  • 查看作業:SELECT * FROM user_jobs;
  • 移除作業:DBMS_JOB.REMOVE(jobno);
  • 修改作業:DBMS_JOB.CHANGE(jobno, what, next_date, interval);
  • 強制立即執行:DBMS_JOB.RUN(jobno);
  • 10g+ 建議改用 DBMS_SCHEDULER 功能更強
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved