oracle job

wangzh3發表於2006-05-26

經常會有一些定時任務需要對oracle資料庫進行操作,這個處理常見的有兩種辦法:

1、unix/linux的定時任務,寫一個shell或者perl等程式

2、job

以前由於開發規範的要求,大多是按照第一種來寫,實際上我覺得job更合適。因為如果oracle資料庫伺服器的作業系統是windows的話,按照第一種實現方式的話可能需要網路操作,如果網路中斷,則定時任務無法處理。

並且oracle可以對檔案系統進行操作,可以透過包來寫檔案,所以job是一個能夠完成絕大部分的操作。

今天又用到了,就簡單的記錄了一下,以後可以參考。

[@more@]

variable job number;
begin
sys.dbms_job.submit(job => :job,
what => 'begin your_sp_name; end;',
next_date => to_date('26-05-2006 03:17:38', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate+1');
commit;
end;
/

上面的這段程式碼執行過後,就可以看到生成的job的jobid,其中your_sp_name是你的儲存過程的名稱,如果帶引數,需要將引數傳入。

然後使用

select next_date,what,interval,broken from user_jobs

就可以看到當前使用者下的所有job的下次執行時間,執行的內容,時間間隔,job狀態等資訊。

當然,使用shell也很簡單

sqlplus -i -n username/password@sidname<

your_sp_name;

EOF

把上面的程式碼另存為cronOracleJob.sh

chmod +x cronOracleJob.sh

加入crontab即可(不同的系統可能需要在前面加上#!/sh的路徑)

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

相關文章