程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 如何創建Oracle的jobs 以及Procedure

如何創建Oracle的jobs 以及Procedure

編輯:Oracle數據庫基礎

例:在Toad界面下。選擇databases->Procedure Editor
//也可以直接在sql界面下執行//也可以直接在isql*plus界面下執行

create procedure bertelsmann as
begin

   INSERT INTO RECORD SELECT CUSSENT.* FROM CUSSENT WHERE ADDDATE<=TO_DATE(to_char(add_months(sysdate,-3),'yyyy-MM-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss');
 
  DELETE FROM CUSSENT WHERE ADDDATE<=TO_DATE (to_char(add_months(sysdate,-3),'yyyy-MM-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss');

   COMMIT;

end;

-- 以上創建 一個名為bertelsmann的過程。作用時向表record中插入cussent表中日期小於當前日期三個月的記錄
然後刪除cussent表中的數據,刪除掉剛才插入record(備份表中的數據)

這樣一個過程創建 好了。
在Procedures下面能看到我們所創建的過程。。

然後我要讓他每三個月執行一次該備份的功能

declare v_job number:=1;

begin

dbms_job.submit(v_job,'bertelsmann;',sysdate,'sysdate+1/1440');

commit;

end;

--解釋一下上面的程序

程序主體有四個參數,分別意為:v_job是計劃任務號,'bertelsmann;'是計劃任務名,如果是多個計劃任務,就都用分號隔開,

第三個sysdate意為立即執行此任務,第四個參數是間隔時間的設置,此處為每分鐘執行一次,1/1440=1/24/60。


以下轉載:

查看任務:select * from user_jobs;select * from all_jobs;

查看正在運行的任務(不推薦使用,速度慢):select * from dba_jobs_running;

另外值得一提的是,在安裝Oracle配置的時候,有這麼一個參數:

job_queue_processes=4  (默認4)

這個參數是定義當前最多可同時運行幾個job,它的最大值能設置為36。

除了submit參數外,其余的幾個參數有:

        dbms_job.run(v_job);         //運行job

        dbms_job.broken(v_job,true,next_date);        //停止一個job,裡面參數true也可是false,next_date(某一時刻停止)也可是sysdate(立刻停止)。

        dbms_job.remove(v_job);        //刪除某個job

        dbms_job.what(v_job,'sp_fact_charge_code;');        //修改某個job名

        dbms_job.next_date(v_job,sysdate);        修改下一次運行時間

例題,設定每天2:10:10運行

trunc(sysdate)+2/24+10/24/60+10/24/60/60        //運行時間

trunc(sysdate)+1+2/24+10/24/60+10/24/60/60        //間隔運行時間

例題,設定每月2號的2:10:10運行

trunc(sysdate,'mm')+1+2/24+10/24/60+10/24/60/60        //運行時間

trunc(add_mouths(sysdate,1),'mm')+1+2/24+10/24/60+10/24/60/60           //間隔運行時間

例題,設定每個季度……

trunce(sysdate,'Q')+1+2/24+10/24/60+10/24/60/60         //運行時間

trunce(add_mouths(sysdate,3),'Q'))+1+2/24+10/24/60+10/24/60/60         //間隔運行時間

另外年為'Y;

例題,設定每周一……

next_day(sysdate'星期一')
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved