在oracle資料庫操作中,有時候我們需要定時的執行某些儲存過程。那oracle如何實現呢?
從oracle 10.1版本開始,oracle開發了乙個新的包dbms_scheduler。這個包就能幫解決我們的定時計畫任務的問題。
1. job建立例項
begin
dbms_scheduler.create_job(job_name => 'job_exwh_bpartner_static',
job_type => 'plsql_block',
job_action => 'declare
io_row number;
io_status number;
vo_sqlerr varchar2(1000);
begin
--呼叫儲存過程
bi_dm.p_f_t_exwh_bparner_static(sysdate, io_row, io_status, vo_sqlerr);
end;',
repeat_interval => 'freq=daily;byhour=15;byminute=00;bysecond=00;interval=1;',
job_class => 'default_job_class',
enabled => true,
auto_drop => false,
comments => '這是個測試');
end;
2.job語句
dbms_scheduler.create_job
3.job引數
job_name: job名稱
job_type: job型別
job_action: job執行動作
repeat_interval:job的計畫
job_class:指定任務關聯的class,預設值為default_job_class
enable: 建立時檢查job有效性
auto_drop: 在job完成之後或者被自動disabled之後job將被自動刪除
comments: 備註
start_date: job生效時間
end_date: job結束時間
4.repeat_interval引數
freq:
yearly:以年單位
monthly:以月單位
weekly:以周單位
daily:以日單位
hourly:以小時單位
minutely:以分單位
secondly:以秒單位
interval: 執行次數
bymonthday:月份中的日期
byday:星期
byhour:小時
byminute:分鐘
bysecond:秒
--查詢該使用者所有job
select * from user_scheduler_jobs;
--查詢正在執行的job
select * from user_scheduler_running_jobs
begin
dbms_scheduler.run_job(use_current_session =>false ,job_name => 'job_exwh_bpartner_static');
end;
begin
dbms_scheduler.drop_job(job_name=>'job_exwh_bpartner_static',force=>false);
end;
force :如果是 false 則如果有其他的 job 在使用這個 schedule 就不會刪除這個 schedule ,如果是 true 則不管有沒有其他 job 使用這個 schedule 都會將這個 schedule 刪除。
Oracle定時計畫快速使用
sqlserver中有相關的定時計畫,可以直接開啟sql server 的任務管理器進行配置,可以方便 快速實現定時執行相應任務。相應的oracle也有對應的定時計畫,只不過沒有乙個很好的圖形介面供使用者去操作。本文主要是為了方便使用者在oracle中快速建立定時計畫,定期執行相應的sql或者儲存過...
spring 定時計畫
定時表示式 cronexpresession的設定格式,附下 字段 允許值 允許的特殊字元 秒 0 59 分 0 59 小時 0 23 日期 1 31 l w c 月份 1 12 或者 jan dec 星期 1 7 或者 sun sat l c 年 可選 留空,1970 2099 表示式 意義 0 ...
Scheduled定時計畫
springboot整合了 scheduled的相關依賴 org.springframework.scheduling.annotation.scheduled 我們只需要直接使用即可。注意 spring的定時任務預設是單執行緒的。如果有多個定時任務,那麼執行起來時間會有問題 這時就需要 開啟多執行...