例:在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'星期一')