oracle job 介紹

wuxidba發表於2010-10-21

 

 

1. Enable job queue

SQL> alter system enable restrict session;

2. make sure oracle has set the job queue parameter

in orcl(oracle sid).ora,

need to add

job_queue_process = N (process number)

job_queue_interval= N (awake interval)

3. add job to job queue

dbms_job.summit(jobnumber, procedure+parameter,whentorun, next_run_interval)

If next_run_interval is null, then the job will be deleted from queue after running.

next_run_interval will be set as sysdate+interval_time.

sysdate+1/48 = 半小時一次  (1×24×60/48=30min)

sysdate+1/360 = 4分鐘一次(1×24×60/360=4min)

4. run the job

SQL>; grant execute on dbms_job to scott; 

begin

dbms_job.run(47);   --47 is job number in user_jobs

end;

5.check job result

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來重新執行它。 

dbms_job.change  dbms_job.whatdbms_job.interval可以用來修改提交的任務。要想刪除該任務,只需執行dbms_job.remove(n)即可,其中n為任務號。

以下的文章主要是介紹 Oracle job的用法的實際操作步驟,本文主要告訴你在在進行Oracle job中,如何設定初始化的引數job_queue_processes,以及相關重要步驟的詳細解析,以下就是文章的詳細介紹。

一、設定初始化引數job_queue_processes

  1. sql> alter system set job_queue_processes=n;(n>0)  
  2. job_queue_processes 

最大值為1000

檢視job queue 後臺程式

  1. sql>select name,description from v$bgprocess; 

二,dbms_job package 用法介紹

包含以下子過程:

Broken()過程。

change()過程。

Interval()過程。

Isubmit()過程。

Next_Date()過程。

Remove()過程。

Run()過程。

Submit()過程。

User_Export()過程。

What()過程。

1、在Oracle job的用法中Broken()過程更新一個已提交的工作的狀態,典型地是用來把一個已破工作標記為未破工作。

這個過程有三個引數:job 、broken與next_date。

  1. PROCEDURE Broken (job  IN binary_integer,  
  2. BrokenIN boolean,  
  3. next_date IN date :=SYSDATE)  

job引數是工作號,它在問題中唯一標識工作。

broken引數指示此工作是否將標記為破――TRUE說明此工作將標記為破,而FLASE說明此工作將標記為未破。next_date引數指示在什麼時候此工作將再次執行。此引數預設值為當前日期和時間。

job如果由於某種原因未能成功之行,Oracle將重試16次後,還未能成功執行,將被標記為broken重新啟動狀態為broken的job,有如下兩種方式;

a、利用dbms_job.run()立即執行該job

  1. sql>begin  
  2. sql>dbms_job.run(:jobno)  

該jobno為submit過程提交時返回的job number

  1. sql>end;  
  2. sql>/  

b、利用dbms_job.broken()重新將broken標記為false

  1. sql>begin  
  2. sql>dbms_job.broken (:job,false,next_date)  
  3. sql>end;  
  4. sql>/  

以上的相關內容就是對Oracle job的用法的部分介紹,望你能有所收穫。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23895263/viewspace-676493/,如需轉載,請註明出處,否則將追究法律責任。

相關文章