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

Oracle DBMS_JOB 實戰範例:從建表、存儲過程到 Job 全生命週期管理

     編輯:Oracle 教學

Oracle DBMS_JOB 實戰範例:從建表、存儲過程到 Job 全生命週期管理

一、建立測試表與存儲過程

CREATE TABLE test_job (para_date DATE);
INSERT INTO test_job VALUES (SYSDATE);
COMMIT;

CREATE OR REPLACE PROCEDURE test_jobproce AS
BEGIN
    INSERT INTO test_job VALUES (SYSDATE);
END test_jobproce;
/
COMMIT;

二、建立 Job (每分鐘執行一次)

DECLARE
    v_jobno NUMBER;
BEGIN
    DBMS_JOB.SUBMIT(v_jobno, 'test_jobproce;', SYSDATE, 'SYSDATE + 1/1440');
    COMMIT;
END;
/
-- 假設回傳 Job 編號 25

三、Job 生命週期操作 (以 Job 25 為例)

-- 停用
BEGIN DBMS_JOB.BROKEN(25, TRUE); COMMIT; END;
/
-- 啟用 (立即執行一次)
BEGIN DBMS_JOB.RUN(25); COMMIT; END;
/
-- 移除
BEGIN DBMS_JOB.REMOVE(25); COMMIT; END;
/
-- 查詢執行記錄
SELECT * FROM test_job ORDER BY para_date DESC;
-- 查詢 Job 狀態
SELECT * FROM USER_JOBS;
SELECT * FROM DBA_JOBS_RUNNING;  -- 正在跑的
SELECT * FROM DBA_JOBS;          -- 歷史完成

四、進階參數操作速查

功能語法
修改執行內容DBMS_JOB.WHAT(job, 'new_proc;');
修改下次執行時間DBMS_JOB.NEXT_DATE(job, SYSDATE);
指定時間停用DBMS_JOB.BROKEN(job, TRUE, next_date);

五、驗證結果

查詢 test_job 表,每分鐘應新增一筆 SYSDATE 記錄,證實 Job 正常運作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved