oracle建立job定期運行預存程序

來源:互聯網
上載者:User

標籤:

1 首先查看


SQL> show parameter job

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 10

如果值是 0 需要修改(如果為0則無法運行job,此值為允許同時啟動並執行job數量)

alter system set job_queue_processes =10; --或者其他值

2 一個簡單例子:
  
  建立測試表
  SQL> create table TEST(a date);
  
  表已建立。
  
  建立一個自訂過程
  SQL> create or replace procedure MYPROC as
   2 begin
   3 insert into TEST values(sysdate);
   4 end;
   5 /
  
  過程已建立。
  
  建立JOB
  SQL> variable job1 number;
  SQL>
  SQL> begin
   2 dbms_job.submit(:job1,‘MYPROC;‘,sysdate,‘sysdate+1/1440‘);  --每天1440分鐘,即一分鐘運行test過程一次
   3 end;
   4 /
  
  PL/SQL 過程已成功完成。
  
  運行JOB
  SQL> begin
   2 dbms_job.run(:job1);
   3 end;
   4 /
  
  PL/SQL 過程已成功完成。
  
  SQL> select to_char(a,‘yyyy/mm/dd hh24:mi:ss‘) 時間 from TEST;
  
  時間
  -------------------
  2001/01/07 23:51:21
  2001/01/07 23:52:22
  2001/01/07 23:53:24
  
  刪除JOB
  SQL> begin
   2 dbms_job.remove(:job1);
   3 end;
   4 /
  
  PL/SQL 過程已成功完成。
Sql> print :n;
系統列印此任務的編號,例如結果為300。
如上,我們建立了一個每隔1分鐘執行一次的任務號為300的任務。可以通過Oracle提供的資料字典user_jobs察看該任務的執行情況:
sql> select job,next_date,next_sec,failures,broken from user_jobs;
執行結果如下:
job next_date next_sec failures broken
300 2000/10/10 11:45:15 0 N
這表示任務號為300的任務,下一次將在2000/10/10 11:45:15執行,此任務的執行失敗記錄為0次。注意:當執行job出現錯誤時,Oracle將其記錄在日誌裡,失敗次數每次自動加1。當執行失敗次數達到16時,Oracle就將該job標誌為broken。此後,Oracle不再繼續執行它,直到使用者調用過程dbms_job.broken,重新設定為not broken,或強制調用dbms_job.run來重新執行它。
除了以上我們討論的submit預存程序之外,Oracle還提供了其他許多預存程序來操作任務。例如:dbms_job.change 、 dbms_job.what、dbms_job.interval可以用來修改提交的任務。要想刪除該任務,只需運行dbms_job.remove(n)即可,其中n為任務號。

3 上面的例子沒有涉及到預存程序帶參數的問題,如果帶參數假設為
MYPROC( ina IN VARCHAR2,
------------------以下為必須輸出參數組---------------------------------
outa OUT NUMBER,
outb OUT VARCHAR2)

則 在建立job的代碼中
建立JOB
  begin
sys.dbms_job.submit(job => :job,
what => ‘
declare

outa number; --定義輸出變數
outb varchar2(40);
begin
MYPROC(‘‘輸入‘‘,outa =>outa ,outb =>outb );
end;‘,
next_date => to_date(‘10-10-2006 08:48:34‘, ‘dd-mm-yyyy hh24:mi:ss‘),
interval => ‘sysdate+1‘);
commit;
end;
/



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1399765

 

 

 

 

本文來自:新浪部落格http://blog.sina.com.cn/s/blog_586f1baf01000bww.html

oracle建立job定期運行預存程序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.